From 3d55d6a5e18edb0e2087b51842c1a2d6d7094d64 Mon Sep 17 00:00:00 2001 From: Philip Wiese Date: Thu, 13 Nov 2025 18:12:02 +0100 Subject: [PATCH 01/23] Extend Dockerflow with GAP9 Support - Enable pulling from private GitLab repo - Improve caching for pip, apt and cargo - Fix cMake version - Remove problematic pip installation in favor of apt package - Add ZSH an Oh My ZSH - Add package dependencies for GAP9 SDK - Remove unused files from the container - Fix banshee package problems --- Container/Dockerfile.deeploy | 83 +++++++++-- Container/Dockerfile.toolchain | 57 +++++--- Container/Makefile | 10 +- Container/amd64.list | 8 + Makefile | 37 +++++ toolchain/banshee.patch | 25 ++-- toolchain/gap9-sdk.patch | 260 +++++++++++++++++++++++++++++++++ 7 files changed, 436 insertions(+), 44 deletions(-) create mode 100644 Container/amd64.list create mode 100644 toolchain/gap9-sdk.patch diff --git a/Container/Dockerfile.deeploy b/Container/Dockerfile.deeploy index 68f64748cc..229ea1e45f 100644 --- a/Container/Dockerfile.deeploy +++ b/Container/Dockerfile.deeploy @@ -16,6 +16,7 @@ ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Etc/UTC ENV PATH="/root/.cargo/bin:/app/bender:${PATH}" ENV LLVM_INSTALL_DIR=/app/install/llvm +ENV GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 WORKDIR /app @@ -24,9 +25,14 @@ COPY toolchain/*.patch toolchain/ COPY Makefile ./ COPY requirements-dev.txt ./ +# Install SSH keys to access private repositories +RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan iis-git.ee.ethz.ch >> ~/.ssh/known_hosts + # Compile emulators # WIESEP: We need to already clean up some space, otherwise the GitHub runners run out of disk space RUN --mount=type=cache,target=/ccache \ + --mount=type=cache,target=/root/.cache/pip \ + --mount=type=cache,target=/root/.cargo/registry \ ccache -z && \ make pulp-sdk chimera-sdk qemu mempool banshee xtensor && \ make gvsoc && \ @@ -52,10 +58,19 @@ elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ cp /app/bender /bin; \ fi -# Compile Snitch Runtime +# Compile Snitch Runtime and GAP9 SDK without ccache wrapping ENV CC="gcc" ENV CXX="g++" + +RUN --mount=type=ssh \ + --mount=type=cache,target=/ccache \ + --mount=type=cache,target=/root/.cache/pip \ + ccache -z && \ + make gap9-sdk && \ + ccache -s + RUN --mount=type=cache,target=/ccache \ + --mount=type=cache,target=/root/.cache/pip \ ccache -z && \ make snitch_runtime && \ ccache -s @@ -68,11 +83,13 @@ FROM ubuntu:22.04 AS deeploy ARG TARGETPLATFORM ARG DEBIAN_FRONTEND=noninteractive +ARG CMAKE_VERSION=3.31.1 ENV TZ=Etc/UTC # Export symbols necessary for Deeploy's build flow ENV CMAKE=/usr/bin/cmake ENV PULP_SDK_HOME=/app/install/pulp-sdk +ENV GAP_SDK_HOME=/app/install/gap9-sdk ENV SNITCH_HOME=/app/install/snitch_cluster ENV CHIMERA_SDK_HOME=/app/install/chimera-sdk ENV LLVM_INSTALL_DIR=/app/install/llvm @@ -80,15 +97,23 @@ ENV GVSOC_INSTALL_DIR=/app/install/gvsoc ENV SOFTHIER_INSTALL_DIR=/app/install/softhier ENV MINIMALLOC_INSTALL_DIR=/app/install/minimalloc ENV MEMPOOL_HOME=/app/install/mempool +ENV GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 ENV PATH=/root/.cargo/bin:/app/install/qemu/bin:/app/install/banshee:$PATH +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 WORKDIR /app COPY pyproject.toml ./ +COPY Container/amd64.list ./ # Install dependencies -RUN mkdir -p /root/.cargo/bin/ && \ +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + --mount=type=cache,target=/root/.cache/pip \ + mkdir -p /root/.cargo/bin/ && \ apt-get update && \ + apt-get upgrade -y && \ apt-get install -y git-lfs \ wget \ ccache \ @@ -97,32 +122,62 @@ RUN mkdir -p /root/.cargo/bin/ && \ libpixman-1-dev \ libsdl2-dev \ python-is-python3 \ + python3 \ python3.10-venv \ python3.10-distutils \ - gcc && \ - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \ - python get-pip.py && \ - rm get-pip.py && \ + python3-pip \ + zsh \ + nano \ + sudo \ + gdb-multiarch \ + device-tree-compiler \ + libsndfile1-dev && \ pip install nvidia-pyindex && \ + pip install --upgrade pip setuptools wheel && \ pip install toml-to-requirements && \ toml-to-req --toml-file pyproject.toml && \ - pip install -r requirements.txt + pip install -r requirements.txt && \ + rm requirements.txt pyproject.toml + +# # Install Oh My ZSH +RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended && \ + sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="cypher"/' ~/.zshrc + +# Install AMD64 libraries on ARM64 for GCC GAP9 compiler support +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ +<traces.new_trace(itf_name, &this->trace, vp::DEBUG); ++ + top->new_master_port("sfu_irq", &this->irq); ++ top->new_master_port("sfu_pdm_out_0", &this->irq); ++ top->new_master_port("sfu_pdm_out_1", &this->irq); ++ top->new_master_port("sfu_pdm_out_2", &this->irq); ++ top->new_master_port("sfu_pdm_out_3", &this->irq); ++ top->new_master_port("sfu_pdm_out_4", &this->irq); ++ top->new_master_port("sfu_pdm_out_5", &this->irq); ++ ++ top->new_master_port("sfu_pdm_in_0", &this->irq); ++ top->new_master_port("sfu_pdm_in_1", &this->irq); ++ top->new_master_port("sfu_pdm_in_2", &this->irq); ++ top->new_master_port("sfu_pdm_in_3", &this->irq); ++ top->new_master_port("sfu_pdm_in_4", &this->irq); ++ top->new_master_port("sfu_pdm_in_5", &this->irq); ++ top->new_master_port("sfu_pdm_in_6", &this->irq); ++ top->new_master_port("sfu_pdm_in_7", &this->irq); ++ top->new_master_port("sfu_pdm_in_8", &this->irq); ++ top->new_master_port("sfu_pdm_in_9", &this->irq); ++ top->new_master_port("sfu_pdm_in_10", &this->irq); ++ top->new_master_port("sfu_pdm_in_11", &this->irq); ++ ++ top->new_master_port("sfu_ws_in_0", &this->irq); ++ top->new_master_port("sfu_ws_in_1", &this->irq); ++ top->new_master_port("sfu_ws_in_2", &this->irq); ++ ++ ++ // top->new_slave_port("sfu_stream_in_ready_0", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_1", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_2", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_3", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_4", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_5", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_6", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_7", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_8", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_9", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_10", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_11", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_12", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_13", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_14", &this->in); ++ // top->new_slave_port("sfu_stream_in_ready_15", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_0", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_1", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_2", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_3", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_4", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_5", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_6", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_7", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_8", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_9", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_10", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_11", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_12", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_13", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_14", &this->in); ++ // top->new_slave_port("sfu_stream_out_data_15", &this->in); ++ ++ top->new_master_port("sfu_stream_in_data_0", &this->irq); ++ top->new_master_port("sfu_stream_in_data_1", &this->irq); ++ top->new_master_port("sfu_stream_in_data_2", &this->irq); ++ top->new_master_port("sfu_stream_in_data_3", &this->irq); ++ top->new_master_port("sfu_stream_in_data_4", &this->irq); ++ top->new_master_port("sfu_stream_in_data_5", &this->irq); ++ top->new_master_port("sfu_stream_in_data_6", &this->irq); ++ top->new_master_port("sfu_stream_in_data_7", &this->irq); ++ top->new_master_port("sfu_stream_in_data_8", &this->irq); ++ top->new_master_port("sfu_stream_in_data_9", &this->irq); ++ top->new_master_port("sfu_stream_in_data_10", &this->irq); ++ top->new_master_port("sfu_stream_in_data_11", &this->irq); ++ top->new_master_port("sfu_stream_in_data_12", &this->irq); ++ top->new_master_port("sfu_stream_in_data_13", &this->irq); ++ top->new_master_port("sfu_stream_in_data_14", &this->irq); ++ top->new_master_port("sfu_stream_in_data_15", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_0", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_1", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_2", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_3", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_4", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_5", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_6", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_7", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_8", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_9", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_10", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_11", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_12", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_13", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_14", &this->irq); ++ top->new_master_port("sfu_stream_out_ready_15", &this->irq); + } +- ++ + + vp::IoReqStatus Sfu_periph_empty::custom_req(vp::IoReq *req, uint64_t offset) + { +diff --git a/install_python_deps.sh b/install_python_deps.sh +index 89d9d66d5..3b55961c6 100755 +--- a/install_python_deps.sh ++++ b/install_python_deps.sh +@@ -60,7 +60,7 @@ then + pip3 install -r tools/nntool/tests/requirements.txt + fi + +- pip3 install -r tools/audio-framework/requirements.txt ++# pip3 install -r tools/audio-framework/requirements.txt + pip3 install -r utils/gapy_v2/requirements.txt + pip3 install -r doc/requirements.txt + fi From 8ae3fef61536bf498473564660528c8977a5e679 Mon Sep 17 00:00:00 2001 From: Philip Wiese Date: Wed, 12 Nov 2025 23:38:04 +0100 Subject: [PATCH 02/23] Improve speed of LLVM cloning --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index a9f26bc126..e253be546f 100644 --- a/Makefile +++ b/Makefile @@ -90,9 +90,11 @@ emulators: snitch_runtime pulp-sdk qemu banshee mempool ${TOOLCHAIN_DIR}/llvm-project: cd ${TOOLCHAIN_DIR} && \ - git clone https://github.com/pulp-platform/llvm-project.git \ - -b main && \ - cd ${TOOLCHAIN_DIR}/llvm-project && git checkout ${LLVM_COMMIT_HASH} && \ + git init llvm-project && \ + cd ${TOOLCHAIN_DIR}/llvm-project && \ + git remote add origin https://github.com/pulp-platform/llvm-project.git && \ + git fetch --depth=1 origin ${LLVM_COMMIT_HASH} && \ + git checkout ${LLVM_COMMIT_HASH} && \ git submodule update --init --recursive ${LLVM_INSTALL_DIR}: ${TOOLCHAIN_DIR}/llvm-project From 6acde80ae92fc21870bc0c2aaaabed7d515a7046 Mon Sep 17 00:00:00 2001 From: Philip Wiese Date: Thu, 13 Nov 2025 18:03:22 +0100 Subject: [PATCH 03/23] Initial GAP9 Support --- CMakeLists.txt | 42 +++- Deeploy/Targets/GAP9/Platform.py | 143 ++++++++++++ .../GAP9/Templates/AllocateTemplate.py | 69 ++++++ .../Targets/GAP9/Templates/FreeTemplate.py | 22 ++ Deeploy/Targets/GAP9/Templates/__init__.py | 5 + Deeploy/Targets/GAP9/__init__.py | 5 + DeeployTest/CMakeLists.txt | 15 ++ DeeployTest/Platforms/GAP9/CMakeLists.txt | 26 +++ DeeployTest/Platforms/GAP9/inc/CycleCounter.h | 22 ++ DeeployTest/Platforms/GAP9/sdk.config | 28 +++ DeeployTest/Platforms/GAP9/src/CycleCounter.c | 19 ++ DeeployTest/Platforms/GAP9/src/deeploytest.c | 193 ++++++++++++++++ DeeployTest/testRunner_gap9.py | 34 +++ DeeployTest/testRunner_tiled_gap9.py | 24 ++ DeeployTest/testUtils/platformMapping.py | 11 +- DeeployTest/testUtils/testRunner.py | 15 +- TargetLibraries/GAP9/CMakeLists.txt | 30 +++ TargetLibraries/GAP9/inc/DeeployGAP9Math.h | 27 +++ TargetLibraries/GAP9/inc/dory_dma.h | 41 ++++ TargetLibraries/GAP9/inc/dory_mem.h | 28 +++ TargetLibraries/GAP9/inc/mchan.h | 140 ++++++++++++ TargetLibraries/GAP9/src/Util.c | 30 +++ TargetLibraries/GAP9/src/dory_dma.c | 214 ++++++++++++++++++ TargetLibraries/GAP9/src/dory_mem.c | 176 ++++++++++++++ TargetLibraries/Generic/src/BatchNorm_fp32.c | 4 + cmake/simulation.cmake | 7 +- 26 files changed, 1360 insertions(+), 10 deletions(-) create mode 100644 Deeploy/Targets/GAP9/Platform.py create mode 100644 Deeploy/Targets/GAP9/Templates/AllocateTemplate.py create mode 100644 Deeploy/Targets/GAP9/Templates/FreeTemplate.py create mode 100644 Deeploy/Targets/GAP9/Templates/__init__.py create mode 100644 Deeploy/Targets/GAP9/__init__.py create mode 100644 DeeployTest/Platforms/GAP9/CMakeLists.txt create mode 100644 DeeployTest/Platforms/GAP9/inc/CycleCounter.h create mode 100644 DeeployTest/Platforms/GAP9/sdk.config create mode 100644 DeeployTest/Platforms/GAP9/src/CycleCounter.c create mode 100644 DeeployTest/Platforms/GAP9/src/deeploytest.c create mode 100644 DeeployTest/testRunner_gap9.py create mode 100644 DeeployTest/testRunner_tiled_gap9.py create mode 100644 TargetLibraries/GAP9/CMakeLists.txt create mode 100644 TargetLibraries/GAP9/inc/DeeployGAP9Math.h create mode 100644 TargetLibraries/GAP9/inc/dory_dma.h create mode 100644 TargetLibraries/GAP9/inc/dory_mem.h create mode 100644 TargetLibraries/GAP9/inc/mchan.h create mode 100644 TargetLibraries/GAP9/src/Util.c create mode 100644 TargetLibraries/GAP9/src/dory_dma.c create mode 100644 TargetLibraries/GAP9/src/dory_mem.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 70dec13084..5880216fec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.19) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) @@ -14,13 +14,14 @@ set(CMAKE_C_COMPILER_LAUNCHER "ccache") set(CMAKE_CXX_COMPILER_LAUNCHER "ccache") set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) if(TOOLCHAIN STREQUAL GCC) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) endif() -set(platform MemPool CACHE STRING "Platform (MemPool, SoftHier, QEMU, Siracusa, Siracusa_w_neureka, PULP-Open, Generic, Snitch)") -set_property(CACHE platform PROPERTY STRINGS MemPool SoftHier QEMU Siracusa Siracusa_w_neureka PULP-Open Generic Snitch) +set(platform MemPool CACHE STRING "Platform (MemPool, SoftHier, QEMU, Siracusa, Siracusa_w_neureka, PULP-Open, GAP9, Generic, Snitch)") +set_property(CACHE platform PROPERTY STRINGS MemPool SoftHier QEMU Siracusa Siracusa_w_neureka PULP-Open GAP9 Generic Snitch) if(platform STREQUAL MemPool) message(STATUS "Building for platform 'MemPool'") @@ -32,6 +33,12 @@ elseif(platform STREQUAL Siracusa_w_neureka) message(STATUS "Building for platform 'Siracusa_w_neureka'") elseif(platform STREQUAL PULPOpen) message(STATUS "Building for platform 'PULP-Open'") +elseif(platform STREQUAL GAP9) + message(STATUS "Building for platform 'GAP9'") + # set( CMAKE_MESSAGE_LOG_LEVEL "DEBUG" ) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + set(ENV{KCONFIG_CONFIG} DeeployTest/Platforms/GAP9/sdk.config) + include($ENV{GAP_SDK_HOME}/utils/cmake/setup.cmake) elseif(platform STREQUAL Generic) message(STATUS "Building for platform 'Generic'") elseif(platform STREQUAL Snitch) @@ -46,9 +53,14 @@ endif() # Import useful functions / macros include(${CMAKE_CURRENT_LIST_DIR}/cmake/Util.cmake) -include(${CMAKE_CURRENT_LIST_DIR}/cmake/common.cmake) +# Only if not GAP9 +if(NOT platform STREQUAL GAP9) + include(${CMAKE_CURRENT_LIST_DIR}/cmake/common.cmake) +endif() include(${CMAKE_CURRENT_LIST_DIR}/cmake/simulation.cmake) +add_library(deeploylib INTERFACE) + message(STATUS "============================= Project Configuration ============================") message(STATUS "[Deeploy] platform = " ${platform}) message(STATUS "[Deeploy] use_dma = " ${use_dma}) @@ -211,6 +223,28 @@ if(platform STREQUAL Siracusa OR platform STREQUAL Siracusa_w_neureka OR platfor endif() +if(platform STREQUAL GAP9) + project(${TESTNAME} LANGUAGES C ASM) + + add_compile_options( + -Wno-error=unknown-pragmas + ) + + add_compile_definitions( + DEEPLOY_GAP9_PLATFORM + ) + + add_subdirectory(TargetLibraries/Generic) + add_subdirectory(TargetLibraries/GAP9) + target_include_directories(deeploygap9 PUBLIC TargetLibraries/Generic/inc) + + add_subdirectory(DeeployTest) + target_link_libraries(deeploylib INTERFACE deeploybasic deeploygap9) + + setupos(${TESTNAME}) + +endif() + if(platform STREQUAL Snitch) if(TOOLCHAIN STREQUAL LLVM) diff --git a/Deeploy/Targets/GAP9/Platform.py b/Deeploy/Targets/GAP9/Platform.py new file mode 100644 index 0000000000..633b225754 --- /dev/null +++ b/Deeploy/Targets/GAP9/Platform.py @@ -0,0 +1,143 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np +import onnx_graphsurgeon as gs + +from Deeploy.DeeployTypes import ConstantBuffer, DeploymentEngine, DeploymentPlatform, NetworkContext, NodeTemplate, \ + StructBuffer, TransientBuffer, VariableBuffer +from Deeploy.MemoryLevelExtension.MemoryLevels import MemoryHierarchy, MemoryLevel +from Deeploy.MemoryLevelExtension.NetworkDeployers.MemoryLevelDeployer import MemoryPlatform, MemoryPlatformWrapper +from Deeploy.Targets.GAP9.Templates import AllocateTemplate, FreeTemplate +from Deeploy.Targets.Generic.Templates import AllocateTemplate as BasicAllocateTemplate +from Deeploy.Targets.PULPOpen.Platform import PULPMapping + + +class GAP9VariableBuffer(VariableBuffer): + + initTemplate = AllocateTemplate.gap9L2InitTemplate + # allocTemplate = AllocateTemplate.gap9L2AllocateTemplate + # deallocTemplate = FreeTemplate.gap9L2LocalTemplate + + allocTemplate = AllocateTemplate.gap9GenericAllocate + deallocTemplate = FreeTemplate.gap9GenericFree + + def _bufferRepresentation(self): + + if hasattr(self, "_memoryLevel"): + memoryLevel = self._memoryLevel + else: + memoryLevel = None + + return { + "type": self._instance, + "name": self.name, + "size": int(np.prod(self.shape)), + "_memoryLevel": memoryLevel + } + + +class GAP9TransientBuffer(TransientBuffer): + + initTemplate = AllocateTemplate.gap9L2InitTemplate + allocTemplate = AllocateTemplate.gap9GenericAllocate + deallocTemplate = FreeTemplate.gap9GenericFree + + # allocTemplate = AllocateTemplate.gap9L2AllocateTemplate + # deallocTemplate = FreeTemplate.gap9L2GlobalTemplate + + def _bufferRepresentation(self): + + if hasattr(self, "_memoryLevel"): + memoryLevel = self._memoryLevel + else: + memoryLevel = None + + return {"type": self._type, "name": self.name, "size": self.size, "_memoryLevel": memoryLevel} + + +class GAP9ConstantBuffer(ConstantBuffer): + + initTemplate = AllocateTemplate.gap9GenericGlobalInitTemplate + allocTemplate = AllocateTemplate.gap9L2GlobalAllocateTemplate + deallocTemplate = FreeTemplate.gap9L2GlobalTemplate + + def _bufferRepresentation(self): + operatorRepresentation = super()._bufferRepresentation() + + if hasattr(self, "_memoryLevel"): + memoryLevel = self._memoryLevel + else: + memoryLevel = None + + operatorRepresentation["_memoryLevel"] = memoryLevel + + return operatorRepresentation + + +class GAP9StructBuffer(StructBuffer): + + initTemplate = BasicAllocateTemplate.referenceStructInitTemplate + allocTemplate = BasicAllocateTemplate.referenceStructAllocateTemplate + deallocTemplate = NodeTemplate("") + + +# SCHEREMO: stdint is included before pulp_nn_kernels.h because it is supposed to be included in there, but isn't... +_includeList = [ + "pmsis.h", + "DeeployGAP9Math.h", +] + + +class GAP9ClusterEngine(DeploymentEngine): + + def __init__(self, name: str, Mapping = PULPMapping, initCode = "", includeList = _includeList) -> None: + super().__init__(name, Mapping, initCode, includeList) + + +class GAP9Platform(DeploymentPlatform): + + def __init__(self, + engines = [GAP9ClusterEngine("GAP9Cluster")], + variableBuffer = GAP9VariableBuffer, + constantBuffer = GAP9ConstantBuffer, + structBuffer = GAP9StructBuffer, + transientBuffer = GAP9TransientBuffer) -> None: + super().__init__(engines, variableBuffer, constantBuffer, structBuffer, transientBuffer) + + +class MemoryGAP9Platform(MemoryPlatform): + + untiledOps = ["add"] + + def __init__(self, + memoryHierarchy: MemoryHierarchy, + defaultTargetMemoryLevel: MemoryLevel, + engines = [GAP9ClusterEngine("GAP9Cluster")], + variableBuffer = GAP9VariableBuffer, + constantBuffer = GAP9ConstantBuffer, + structBuffer = GAP9StructBuffer, + transientBuffer = GAP9TransientBuffer) -> None: + super().__init__(memoryHierarchy, defaultTargetMemoryLevel, engines, variableBuffer, constantBuffer, + structBuffer, transientBuffer) + + def getTargetMemoryLevel(self, node: gs.Node, tensorName: str, ctxt: NetworkContext) -> str: + if node.op in self.untiledOps: + return ctxt.lookup(tensorName)._memoryLevel + return super().getTargetMemoryLevel(node, tensorName, ctxt) + + +class MemoryGAP9PlatformWrapper(MemoryPlatformWrapper): + + untiledOps = ["add"] + + def __init__(self, platform: GAP9Platform, memoryHierarchy: MemoryHierarchy, defaultTargetMemoryLevel: MemoryLevel): + assert isinstance(platform, GAP9Platform), \ + f"Given platform is not an instance of GAP9Platform. Platform type: {type(platform).__name__}" + super().__init__(platform, memoryHierarchy, defaultTargetMemoryLevel) + + def getTargetMemoryLevel(self, node: gs.Node, tensorName: str, ctxt: NetworkContext) -> str: + if node.op in self.untiledOps: + return ctxt.lookup(tensorName)._memoryLevel + return super().getTargetMemoryLevel(node, tensorName, ctxt) diff --git a/Deeploy/Targets/GAP9/Templates/AllocateTemplate.py b/Deeploy/Targets/GAP9/Templates/AllocateTemplate.py new file mode 100644 index 0000000000..32a3e40c37 --- /dev/null +++ b/Deeploy/Targets/GAP9/Templates/AllocateTemplate.py @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from Deeploy.DeeployTypes import NodeTemplate + +gap9L2InitTemplate = NodeTemplate("${type.typeName} ${name};\n") + +gap9L1InitTemplate = NodeTemplate("${type.typeName} ${name};\n") +#gap9L2AllocateTemplate = NodeTemplate("${name} = (${type.typeName}) pi_l2_malloc(${type.referencedType.typeWidth//8} * ${size});\n") +gap9L2AllocateTemplate = NodeTemplate( + "${name} = (${type.typeName}) pi_l2_malloc(sizeof(${type.referencedType.typeName}) * ${size});\n") + +gap9L1AllocateTemplate = NodeTemplate( + "${name} = (${type.typeName}) pi_l1_malloc((void *) 0, sizeof(${type.referencedType.typeName}) * ${size});\n") + +gap9L2GlobalInitTemplate = NodeTemplate( + "static PI_L2 ${type.referencedType.typeName} ${name}[${size}] = {${values}};\n") + +gap9L1GlobalInitTemplate = NodeTemplate( + "static PI_L1 ${type.referencedType.typeName} ${name}[${size}] = {${values}};\n") + +#gap9L2GlobalInitTemplate = NodeTemplate("static const ${type} ${name}[${size}];\n") +gap9L2GlobalAllocateTemplate = NodeTemplate("") + +gap9L1GlobalAllocateTemplate = NodeTemplate("") + +gap9L2StructInitTemplate = NodeTemplate("""static PI_L2 ${type.typeName} ${name}; +""") +#static const ${type}* ${name} = &${name}_UL; + +gap9L2StructAllocateTemplate = NodeTemplate(""" % for key, value in structDict.items(): + ${name}.${key} = ${value}; +% endfor """) + +gap9GenericStructInitTemplate = NodeTemplate(""" +% if _memoryLevel == "L1": +static PI_L1 ${type.typeName} ${name};\n +% elif _memoryLevel == "L2" or _memoryLevel is None: +static PI_L2 ${type.typeName} ${name};\n +% elif _memoryLevel == "L3": +// ${name} is allocated in L3 \n +% endif +""") + +gap9GenericGlobalInitTemplate = NodeTemplate(""" +% if _memoryLevel == "L1": +static PI_L1 ${type.referencedType.typeName} ${name}[${size}] = {${values}};\n +% elif _memoryLevel == "L2" or _memoryLevel is None: +static PI_L2 ${type.referencedType.typeName} ${name}[${size}] = {${values}};\n +% elif _memoryLevel == "L3": +// ${name} is allocated in L3 \n +static PI_L2 ${type.referencedType.typeName}* ${name}; +% endif +""") + +gap9GenericAllocate = NodeTemplate(""" +% if _memoryLevel == "L1": +${name} = (${type.typeName}) pi_l1_malloc((void *) 0, sizeof(${type.referencedType.typeName}) * ${size});\n +% elif _memoryLevel == "L2" or _memoryLevel is None: +${name} = (${type.typeName}) pi_l2_malloc(sizeof(${type.referencedType.typeName}) * ${size});\n +% elif _memoryLevel == "L3": +${name} = (${type.typeName}) cl_ram_malloc(sizeof(${type.referencedType.typeName}) * ${size});\n +% else: +//COMPILER BLOCK - MEMORYLEVEL ${_memoryLevel} NOT FOUND \n +${name} = (${type.typeName}) pi_l2_malloc(sizeof(${type.referencedType.typeName}) * ${size});\n +// ${name} with size ${size} allocated in L2! +% endif +""") diff --git a/Deeploy/Targets/GAP9/Templates/FreeTemplate.py b/Deeploy/Targets/GAP9/Templates/FreeTemplate.py new file mode 100644 index 0000000000..185b330b16 --- /dev/null +++ b/Deeploy/Targets/GAP9/Templates/FreeTemplate.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from Deeploy.DeeployTypes import NodeTemplate + +gap9L2LocalTemplate = NodeTemplate("pi_l2_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});") +gap9L2GlobalTemplate = NodeTemplate("pi_l2_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});") +gap9L1FreeTemplate = NodeTemplate("pi_l1_malloc_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});\n") +gap9L1GlobalFreeTemplate = NodeTemplate("") + +gap9GenericFree = NodeTemplate(""" +% if _memoryLevel == "L1": +pi_l1_malloc_free(${name}, sizeof(${type.referencedType.typeName}) * ${size}); +% elif _memoryLevel == "L2" or _memoryLevel is None: +pi_l2_free(${name}, sizeof(${type.referencedType.typeName}) * ${size}); +% elif _memoryLevel == "L3": +cl_ram_free(${name}, sizeof(${type.referencedType.typeName}) * ${size}); +% else: +//COMPILER BLOCK - MEMORYLEVEL ${_memoryLevel} NOT FOUND \n +% endif +""") diff --git a/Deeploy/Targets/GAP9/Templates/__init__.py b/Deeploy/Targets/GAP9/Templates/__init__.py new file mode 100644 index 0000000000..9cd8ddcb2e --- /dev/null +++ b/Deeploy/Targets/GAP9/Templates/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from . import * diff --git a/Deeploy/Targets/GAP9/__init__.py b/Deeploy/Targets/GAP9/__init__.py new file mode 100644 index 0000000000..9cd8ddcb2e --- /dev/null +++ b/Deeploy/Targets/GAP9/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from . import * diff --git a/DeeployTest/CMakeLists.txt b/DeeployTest/CMakeLists.txt index 0634b4ba0f..4e7fe40fc8 100644 --- a/DeeployTest/CMakeLists.txt +++ b/DeeployTest/CMakeLists.txt @@ -50,5 +50,20 @@ elseif(DEEPLOY_ARCH STREQUAL SNITCH) add_subdirectory(Platforms/Snitch) elseif(DEEPLOY_ARCH STREQUAL CHIMERA) add_subdirectory(Platforms/Chimera) +elseif(platform STREQUAL GAP9) + file(GLOB_RECURSE HEXLIST + "${GENERATED_SOURCE}/hex/**" + ) + + list(APPEND GVSOC_EXTRA_FLAGS --target-property=boot.flash_device=mram --target-property=boot.mode=flash) + + if (NOT HEXLIST) + target_compile_options(network PUBLIC -DNOFLASH) + else() + gvsoc_flags_add_files_to_hyperflash(GVSOC_HEX_HYPERFLASH_FLAGS HEXLIST) + list(APPEND GVSOC_EXTRA_FLAGS ${GVSOC_HEX_HYPERFLASH_FLAGS}) + endif() + + add_subdirectory(Platforms/GAP9) endif() diff --git a/DeeployTest/Platforms/GAP9/CMakeLists.txt b/DeeployTest/Platforms/GAP9/CMakeLists.txt new file mode 100644 index 0000000000..ec79db2a5d --- /dev/null +++ b/DeeployTest/Platforms/GAP9/CMakeLists.txt @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +set(ProjectId ${TESTNAME}) + +# set($ENV{KCONFIG_CONFIG} ${CMAKE_CURRENT_LIST_DIR}/sdk.config) +# set(${SDKCONFIG_DIR} ${CMAKE_CURRENT_LIST_DIR}) + + +set(${SDKCONFIG_FILE} ${CMAKE_CURRENT_LIST_DIR}/sdk.config) + +file(GLOB_RECURSE SOURCES + src/CycleCounter.c + src/deeploytest.c +) + +add_deeploy_executable(${ProjectId} EXCLUDE_FROM_ALL ${SOURCES}) +# add_executable(${ProjectId} ${SOURCES}) +target_include_directories(${ProjectId} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/inc) + +target_link_libraries(${ProjectId} PRIVATE network deeploylib) +target_compile_options(${ProjectId} INTERFACE network) +add_gvsoc_emulation(${ProjectId} "gap9.evk") + +link_compile_dump(${TESTNAME}) diff --git a/DeeployTest/Platforms/GAP9/inc/CycleCounter.h b/DeeployTest/Platforms/GAP9/inc/CycleCounter.h new file mode 100644 index 0000000000..e4720af1f1 --- /dev/null +++ b/DeeployTest/Platforms/GAP9/inc/CycleCounter.h @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef CYCLECOUNTER +#define CYCLECOUNTER + +// Resets the internal cycle counter to zero +void ResetTimer(void); + +// Starts the internal cycle counter +void StartTimer(void); + +// Stops the internal cycle counter +void StopTimer(void); + +// Returns the current number of cycles according to the internal cycle counter +unsigned int getCycles(void); + +#endif diff --git a/DeeployTest/Platforms/GAP9/sdk.config b/DeeployTest/Platforms/GAP9/sdk.config new file mode 100644 index 0000000000..16695a4acc --- /dev/null +++ b/DeeployTest/Platforms/GAP9/sdk.config @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_BOARD_GAP9MOD_V1_0_B=y +CONFIG_BOARD_GAP9EVK_V1_3=y + +CONFIG_DRIVER_CLUSTER=y +CONFIG_DRIVER_CLUSTER_CONF_PROPERTY_ICACHE_CONF=0x7FF + +CONFIG_DRIVER_TYPE_FLASH=y +CONFIG_DRIVER_TYPE_RAM=y + +# CONFIG_DRIVER_MRAM=y +CONFIG_DRIVER_READFS=y +# CONFIG_READFS_FLASH_TYPE_MRAM=y + +# CONFIG_DRIVER_APS256XXN=y +# CONFIG_DRIVER_RAM_API=y + +CONFIG_ENABLE_LIBMATH=y + +# OS float printf +CONFIG_IO_PRINTF_FLOAT_ENABLE=y +CONFIG_IO_PRINTF_FLOAT_EXPONENT_ENABLE=y + +CONFIG_PLATFORM_GVSOC=y +# CONFIG_DRIVER_CLUSTERDECOMPRESSOR=n \ No newline at end of file diff --git a/DeeployTest/Platforms/GAP9/src/CycleCounter.c b/DeeployTest/Platforms/GAP9/src/CycleCounter.c new file mode 100644 index 0000000000..820ea05028 --- /dev/null +++ b/DeeployTest/Platforms/GAP9/src/CycleCounter.c @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "CycleCounter.h" +#include "pmsis.h" + +void ResetTimer() { + pi_perf_conf(1 << PI_PERF_CYCLES); + pi_perf_reset(); +} + +void StartTimer() { pi_perf_start(); } + +void StopTimer() { pi_perf_stop(); } + +unsigned int getCycles() { return pi_perf_read(PI_PERF_CYCLES); } diff --git a/DeeployTest/Platforms/GAP9/src/deeploytest.c b/DeeployTest/Platforms/GAP9/src/deeploytest.c new file mode 100644 index 0000000000..e44455d741 --- /dev/null +++ b/DeeployTest/Platforms/GAP9/src/deeploytest.c @@ -0,0 +1,193 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#include "CycleCounter.h" +#include "Network.h" +#include "dory_mem.h" +#include "pmsis.h" +#include "testinputs.h" +#include "testoutputs.h" + +#define MAINSTACKSIZE 8000 +#define SLAVESTACKSIZE 3800 + +struct pi_device cluster_dev; + +typedef struct { + void *expected; + void *actual; + int num_elements; + int output_buf_index; + int *err_count; +} FloatCompareArgs; + +void CompareFloatOnCluster(void *args) { + + if (pi_core_id() == 0) { + FloatCompareArgs *compare_args = (FloatCompareArgs *)args; + float *expected = (float *)compare_args->expected; + float *actual = (float *)compare_args->actual; + int num_elements = compare_args->num_elements; + int output_buf_index = compare_args->output_buf_index; + int *err_count = compare_args->err_count; + + int local_err_count = 0; + + for (int i = 0; i < num_elements; i++) { + float expected_val = expected[i]; + float actual_val = actual[i]; + float diff = expected_val - actual_val; + + if ((diff < -1e-4) || (diff > 1e-4) || isnan(diff)) { + local_err_count += 1; + + printf("Expected: %10.6f ", expected_val); + printf("Actual: %10.6f ", actual_val); + printf("Diff: %10.6f at Index %12u in Output %u\r\n", diff, i, + output_buf_index); + } + } + + *err_count = local_err_count; + } +} + +void CL_CompareFloat(void *arg) { + pi_cl_team_fork(NUM_CORES, CompareFloatOnCluster, arg); +} + +void PE_RunNetwork(void *arg) { +#ifndef CI + uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); + printf("[%d %d] Run Network!\n", cluster_id, core_id); +#endif + RunNetwork(pi_core_id(), NUM_CORES); +} + +void CL_RunNetwork(void *arg) { + pi_cl_team_fork(NUM_CORES, PE_RunNetwork, NULL); +} + +void PE_InitNetwork(void *arg) { +#ifndef CI + uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); + printf("[%d %d] Init Network!\n", cluster_id, core_id); +#endif + + InitNetwork(pi_core_id(), NUM_CORES); +} + +int main(void) { +#ifndef CI + uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); + printf("[%d %d] Hello World!\n", cluster_id, core_id); +#endif + struct pi_cluster_conf conf; + + pi_cluster_conf_init(&conf); + conf.id = 0; + pi_open_from_conf(&cluster_dev, &conf); + if (pi_cluster_open(&cluster_dev)) + return -1; + + mem_init(); +#ifndef NOFLASH + open_fs(); +#endif + + printf("Intializing\r\n"); + + struct pi_cluster_task cluster_task; + + pi_cluster_task(&cluster_task, PE_InitNetwork, NULL); + cluster_task.slave_stack_size = SLAVESTACKSIZE; + pi_cluster_send_task_to_cl(&cluster_dev, &cluster_task); + +#ifndef CI + printf("Initialized\r\n"); +#endif + for (uint32_t buf = 0; buf < DeeployNetwork_num_inputs; buf++) { + if ((uint32_t)DeeployNetwork_inputs[buf] >= 0x10000000) { + memcpy(DeeployNetwork_inputs[buf], testInputVector[buf], + DeeployNetwork_inputs_bytes[buf]); + } + } + +#ifndef CI + printf("Input copied\r\n"); +#endif + + pi_cluster_task(&cluster_task, CL_RunNetwork, NULL); + cluster_task.slave_stack_size = SLAVESTACKSIZE; + ResetTimer(); + StartTimer(); + pi_cluster_send_task_to_cl(&cluster_dev, &cluster_task); + StopTimer(); + +#ifndef CI + printf("Output:\r\n"); +#endif + + uint32_t tot_err, tot_tested; + tot_err = 0; + tot_tested = 0; + void *compbuf; + FloatCompareArgs float_compare_args; + uint32_t float_error_count = 0; + + for (uint32_t buf = 0; buf < DeeployNetwork_num_outputs; buf++) { + tot_tested += DeeployNetwork_outputs_bytes[buf] / sizeof(OUTPUTTYPE); + + if ((uint32_t)DeeployNetwork_outputs[buf] < 0x1000000) { + compbuf = pi_l2_malloc(DeeployNetwork_outputs_bytes[buf]); + ram_read(compbuf, DeeployNetwork_outputs[buf], + DeeployNetwork_outputs_bytes[buf]); + } else { + compbuf = DeeployNetwork_outputs[buf]; + } + + if (ISOUTPUTFLOAT) { + float_error_count = 0; + float_compare_args.expected = testOutputVector[buf]; + float_compare_args.actual = compbuf; + float_compare_args.num_elements = + DeeployNetwork_outputs_bytes[buf] / sizeof(float); + float_compare_args.output_buf_index = buf; + float_compare_args.err_count = (int *)&float_error_count; + + pi_cluster_task(&cluster_task, CL_CompareFloat, &float_compare_args); + cluster_task.slave_stack_size = SLAVESTACKSIZE; + pi_cluster_send_task_to_cl(&cluster_dev, &cluster_task); + + tot_err += float_error_count; + } else { + + for (uint32_t i = 0; + i < DeeployNetwork_outputs_bytes[buf] / sizeof(OUTPUTTYPE); i++) { + OUTPUTTYPE expected = ((OUTPUTTYPE *)testOutputVector[buf])[i]; + OUTPUTTYPE actual = ((OUTPUTTYPE *)compbuf)[i]; + OUTPUTTYPE diff = expected - actual; + + if (diff) { + tot_err += 1; + printf("Expected: %4d ", expected); + printf("Actual: %4d ", actual); + printf("Diff: %4d at Index %12u in Output %u\r\n", diff, i, buf); + } + } + } + if ((uint32_t)DeeployNetwork_outputs[buf] < 0x1000000) { + pi_l2_free(compbuf, DeeployNetwork_outputs_bytes[buf]); + } + } + + printf("Runtime: %u cycles\r\n", getCycles()); + printf("Errors: %u out of %u \r\n", tot_err, tot_tested); + + return 0; +} \ No newline at end of file diff --git a/DeeployTest/testRunner_gap9.py b/DeeployTest/testRunner_gap9.py new file mode 100644 index 0000000000..9335bdbad8 --- /dev/null +++ b/DeeployTest/testRunner_gap9.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from testUtils.testRunner import TestRunner, TestRunnerArgumentParser + +if __name__ == "__main__": + + parser = TestRunnerArgumentParser( + tiling_arguments = False, description = "Deeploy Code Generation Utility for the GAP9 Platform (no Tiling).") + + parser.add_argument('--cores', + metavar = '', + dest = 'cores', + type = int, + default = 8, + help = 'Set number of cluster cores') + + parser.add_argument('--profileUntiled', + action = 'store_true', + dest = 'profileUntiled', + default = False, + help = 'Profile Untiled') + + # Set default GVSOC install dir + for action in parser._actions: + if action.dest == 'gvsoc_install_dir': + action.default = "${GAP_SDK_HOME}/install/workstation" + args = parser.parse_args() + + testRunner = TestRunner(platform = "GAP9", simulator = "gvsoc", tiling = False, argument_parser = parser) + + testRunner.cmake_args += f" -D NUM_CORES={args.cores}" + testRunner.run() diff --git a/DeeployTest/testRunner_tiled_gap9.py b/DeeployTest/testRunner_tiled_gap9.py new file mode 100644 index 0000000000..c1bd72528a --- /dev/null +++ b/DeeployTest/testRunner_tiled_gap9.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +from testUtils.testRunner import TestRunner, TestRunnerArgumentParser + +if __name__ == "__main__": + + parser = TestRunnerArgumentParser(tiling_arguments = True, + description = "Deeploy Code Generation Utility for the GAP9 Platform (Tiling).") + + parser.add_argument('--cores', + metavar = '', + dest = 'cores', + type = int, + default = 8, + help = 'Set number of cluster cores') + + args = parser.parse_args() + + testRunner = TestRunner(platform = "GAP9", simulator = "gvsoc", tiling = True, argument_parser = parser) + + testRunner.cmake_args += f" -D NUM_CORES={args.cores}" + testRunner.run() diff --git a/DeeployTest/testUtils/platformMapping.py b/DeeployTest/testUtils/platformMapping.py index 48c5777905..f107ab2e93 100644 --- a/DeeployTest/testUtils/platformMapping.py +++ b/DeeployTest/testUtils/platformMapping.py @@ -14,6 +14,7 @@ from Deeploy.Targets.Chimera.Platform import ChimeraOptimizer, ChimeraPlatform from Deeploy.Targets.CortexM.Deployer import CMSISDeployer from Deeploy.Targets.CortexM.Platform import CMSISOptimizer, CMSISPlatform +from Deeploy.Targets.GAP9.Platform import GAP9Platform, MemoryGAP9Platform, MemoryGAP9PlatformWrapper from Deeploy.Targets.Generic.Deployer import GenericDeployer from Deeploy.Targets.Generic.Platform import GenericOptimizer, GenericPlatform from Deeploy.Targets.MemPool.Deployer import MemPoolDeployer @@ -29,7 +30,7 @@ from Deeploy.Targets.SoftHier.Platform import SoftHierOptimizer, SoftHierPlatform _SIGNPROP_PLATFORMS = ["Apollo3", "Apollo4", "QEMU-ARM", "Generic", "MemPool", "SoftHier"] -_NONSIGNPROP_PLATFORMS = ["Siracusa", "Siracusa_w_neureka", "PULPOpen", "Snitch", "Chimera"] +_NONSIGNPROP_PLATFORMS = ["Siracusa", "Siracusa_w_neureka", "PULPOpen", "Snitch", "Chimera", "GAP9"] _PLATFORMS = _SIGNPROP_PLATFORMS + _NONSIGNPROP_PLATFORMS @@ -59,6 +60,9 @@ def mapPlatform(platformName: str) -> Tuple[DeploymentPlatform, bool]: elif platformName == "Siracusa" or platformName == "PULPOpen": Platform = PULPPlatform() + elif platformName == "GAP9": + Platform = GAP9Platform() + elif platformName == "Siracusa_w_neureka": Platform = NeurekaPlatform() @@ -85,6 +89,8 @@ def setupMemoryPlatform(platform: DeploymentPlatform, memoryHierarchy: MemoryHie weightMemoryLevel = memoryHierarchy.memoryLevels["WeightMemory_SRAM"] \ if "WeightMemory_SRAM" in memoryHierarchy.memoryLevels else None return MemoryNeurekaPlatformWrapper(platform, memoryHierarchy, defaultTargetMemoryLevel, weightMemoryLevel) + if isinstance(platform, GAP9Platform): + return MemoryGAP9PlatformWrapper(platform, memoryHierarchy, defaultTargetMemoryLevel) else: return MemoryPlatformWrapper(platform, memoryHierarchy, defaultTargetMemoryLevel) @@ -200,7 +206,8 @@ def mapDeployer(platform: DeploymentPlatform, default_channels_first = default_channels_first, deeployStateDir = deeployStateDir) - elif isinstance(platform, (PULPPlatform, MemoryPULPPlatform, MemoryPULPPlatformWrapper)): + elif isinstance(platform, (PULPPlatform, MemoryPULPPlatform, MemoryPULPPlatformWrapper, GAP9Platform, + MemoryGAP9Platform, MemoryGAP9PlatformWrapper)): if loweringOptimizer is None: loweringOptimizer = PULPOptimizer diff --git a/DeeployTest/testUtils/testRunner.py b/DeeployTest/testUtils/testRunner.py index a3329ebf73..e479467c0d 100644 --- a/DeeployTest/testUtils/testRunner.py +++ b/DeeployTest/testUtils/testRunner.py @@ -160,6 +160,12 @@ def __init__(self, tiling_arguments: bool, description = None): type = str, default = os.environ.get('LLVM_INSTALL_DIR'), help = 'Pick compiler install dir\n') + self.add_argument('--gvsoc_install_dir', + metavar = '', + dest = 'gvsoc_install_dir', + type = str, + default = os.environ.get('GVSOC_INSTALL_DIR'), + help = 'Pick gvsoc install dir\n') self.add_argument('--input-type-map', nargs = '*', default = [], @@ -306,7 +312,9 @@ def __init__(self, self._dir_gen_root = f'TEST_{platform.upper()}' assert self._args.toolchain_install_dir is not None, f"Environment variable LLVM_INSTALL_DIR is not set" + assert self._args.gvsoc_install_dir is not None, f"Environment variable GVSOC_INSTALL_DIR is not set" self._dir_toolchain = os.path.normpath(self._args.toolchain_install_dir) + self._dir_gvsoc = os.path.normpath(self._args.gvsoc_install_dir) self._dir_build = f"{self._dir_gen_root}/build" self._dir_gen, self._dir_test, self._name_test = getPaths(self._args.dir, self._dir_gen_root) @@ -367,7 +375,7 @@ def configure_cmake_project(self): else: self.cmake_args += " -D gvsoc_simulation=OFF" - command = f"$CMAKE -D TOOLCHAIN={self._args.toolchain} -D TOOLCHAIN_INSTALL_DIR={self._dir_toolchain} -D GENERATED_SOURCE={self._dir_gen} -D platform={self._platform} {self.cmake_args} -B {self._dir_build} -D TESTNAME={self._name_test} .." + command = f"$CMAKE -D TOOLCHAIN={self._args.toolchain} -D GVSOC_INSTALL_DIR={self._dir_gvsoc} -D TOOLCHAIN_INSTALL_DIR={self._dir_toolchain} -D GENERATED_SOURCE={self._dir_gen} -D platform={self._platform} {self.cmake_args} -B {self._dir_build} -D TESTNAME={self._name_test} .." if self._args.verbose >= 3: command = "VERBOSE=1 " + command @@ -384,6 +392,11 @@ def build_binary(self): if self._args.verbose >= 3: command = "VERBOSE=1 " + command + if self._platform == 'GAP9': + command += f" --build {self._dir_build} --target {self._name_test} image" + else: + command += f" --build {self._dir_build} --target {self._name_test}" + log.debug(f"[TestRunner] Building Command: {command}") err = os.system(command) diff --git a/TargetLibraries/GAP9/CMakeLists.txt b/TargetLibraries/GAP9/CMakeLists.txt new file mode 100644 index 0000000000..a39df465f6 --- /dev/null +++ b/TargetLibraries/GAP9/CMakeLists.txt @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +file(GLOB_RECURSE SOURCES + "src/**" +) + +if(NOT DEFINED ENV{GAP_SDK_HOME}) + message(FATAL_ERROR "Environment variable GAP_SDK_HOME not set.") +endif() + +add_deeploy_library(deeploygap9 STATIC ${SOURCES}) +target_include_directories(deeploygap9 + PUBLIC + ${CMAKE_CURRENT_LIST_DIR}/inc +) + +target_compile_options(deeploygap9 PUBLIC + -DNUM_CORES=${NUM_CORES} + ) + +target_compile_options(deeploygap9 PRIVATE + -Wno-implicit-function-declaration + -Wno-implicit-int-conversion + -Wno-sign-conversion + -Wno-sign-compare +) + +target_link_libraries(deeploygap9 PUBLIC pmsis) diff --git a/TargetLibraries/GAP9/inc/DeeployGAP9Math.h b/TargetLibraries/GAP9/inc/DeeployGAP9Math.h new file mode 100644 index 0000000000..0efa74c72e --- /dev/null +++ b/TargetLibraries/GAP9/inc/DeeployGAP9Math.h @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2021 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __DEEPLOY_MATH_HEADER_ +#define __DEEPLOY_MATH_HEADER_ + +#include +#include +#include +#include +#include + +#define BEGIN_SINGLE_CORE if (pi_core_id() == 8 || pi_core_id() == 0) { +#define END_SINGLE_CORE } +#define SINGLE_CORE if (pi_core_id() == 8 || pi_core_id() == 0) + +#include "DeeployBasicMath.h" + +#include "dory_dma.h" +#include "dory_mem.h" + +#include "pmsis.h" + +#endif // __DEEPLOY_MATH_HEADER_ diff --git a/TargetLibraries/GAP9/inc/dory_dma.h b/TargetLibraries/GAP9/inc/dory_dma.h new file mode 100644 index 0000000000..99ab242558 --- /dev/null +++ b/TargetLibraries/GAP9/inc/dory_dma.h @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2020 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _DORY_DMA_H +#define _DORY_DMA_H + +typedef struct { + void *ext; + void *loc; + unsigned short hwc_to_chw; + unsigned short stride_2d; + unsigned short number_of_2d_copies; + unsigned short stride_1d; + unsigned short number_of_1d_copies; + unsigned int length_1d_copy; + unsigned int mchan_cmd; + int dir; // 0 l1->l2, 1 l2->l1 + int tid; +} DMA_copy; + +void dory_dma_memcpy_hwc_to_chw(DMA_copy *copy); + +void dory_dma_memcpy_1d_async(DMA_copy *copy); + +void dory_dma_memcpy_2d_async(DMA_copy *copy); + +void dory_dma_memcpy_3d_async(DMA_copy *copy); + +void dory_dma_memcpy_async(DMA_copy *copy); + +void dory_dma_memcpy_mindims_async(DMA_copy *copy); + +void dory_dma_free(DMA_copy *copy); + +void dory_dma_barrier(DMA_copy *copy); + +int dory_dma_allocate(); +#endif diff --git a/TargetLibraries/GAP9/inc/dory_mem.h b/TargetLibraries/GAP9/inc/dory_mem.h new file mode 100644 index 0000000000..ccd36a37d6 --- /dev/null +++ b/TargetLibraries/GAP9/inc/dory_mem.h @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2020 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __MEM_H__ +#define __MEM_H__ + +#include + +extern struct pi_device ram; + +void open_fs(); +void mem_init(); +struct pi_device *get_ram_ptr(); +void *ram_malloc(size_t size); +void ram_free(void *ptr, size_t size); +void ram_read(void *dest, void *src, size_t size); +void ram_write(void *dest, void *src, size_t size); +void *cl_ram_malloc(size_t size); +void cl_ram_free(void *ptr, size_t size); +void cl_ram_read(void *dest, void *src, size_t size); +void cl_ram_write(void *dest, void *src, size_t size); +size_t load_file_to_ram(const void *dest, const char *filename); +size_t load_file_to_local(const void *dest, const char *filename); + +#endif // __MEM_H__ diff --git a/TargetLibraries/GAP9/inc/mchan.h b/TargetLibraries/GAP9/inc/mchan.h new file mode 100644 index 0000000000..085f20b2f2 --- /dev/null +++ b/TargetLibraries/GAP9/inc/mchan.h @@ -0,0 +1,140 @@ +/* + * SPDX-FileCopyrightText: 2024 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _MCHAN_H +#define _MCHAN_H + +// Requires to have MCHAN_BASE_ADDR, MCHAN_EVENT defined outside of header +#ifndef MCHAN_BASE_ADDR +#error "[mchan.h] MCHAN_BASE_ADDR not defined!" +#endif + +#if !defined(MCHAN_EVENT) && !defined(MCHAN_POLLED) +#error "[mchan.h] Nor MCHAN_EVENT nor MCHAN_POLLED defined!" +#endif + +#if defined(MCHAN_EVENT) && !defined(MCHAN_EVENT_BIT) +#error \ + "[mchan.h] MCHAN_EVENT_BIT should be defined when using events as signalization!" +#endif + +#include "pmsis.h" + +#define MCHAN_CMD_OFFSET 0 +#define MCHAN_STATUS_OFFSET 4 + +#define MCHAN_CMD_ADDR (MCHAN_BASE_ADDR + MCHAN_CMD_OFFSET) +#define MCHAN_STATUS_ADDR (MCHAN_BASE_ADDR + MCHAN_STATUS_OFFSET) + +#define READ_REG(addr) (*(volatile int *)(addr)) +#define WRITE_REG(addr, value) \ + do { \ + *(volatile int *)(addr) = (int)value; \ + } while (0) + +#define MCHAN_READ_CMD() READ_REG(MCHAN_CMD_ADDR) +#define MCHAN_WRITE_CMD(value) WRITE_REG(MCHAN_CMD_ADDR, value) + +#define MCHAN_READ_STATUS() READ_REG(MCHAN_STATUS_ADDR) +#define MCHAN_WRITE_STATUS(value) WRITE_REG(MCHAN_STATUS_ADDR, value) + +// MCHAN version 7 has 1 more bit for the transfer length, so all the flag +// offsets are shifted by 1. Also, LOC (TCDM) striding is not supported in v6. +#if MCHAN_VERSION == 7 +#define MCHAN_TRANSFER_LEN_SIZE (17) +#else +#define MCHAN_TRANSFER_LEN_SIZE (16) +#endif + +#define MCHAN_CMD_FLAG_DIRECTION_LOC2EXT (0 << (MCHAN_TRANSFER_LEN_SIZE + 0)) +#define MCHAN_CMD_FLAG_DIRECTION_EXT2LOC (1 << (MCHAN_TRANSFER_LEN_SIZE + 0)) +#define MCHAN_CMD_FLAG_INCREMENTAL (1 << (MCHAN_TRANSFER_LEN_SIZE + 1)) +#define MCHAN_CMD_FLAG_2D_TRANSFER_EXTERNAL (1 << (MCHAN_TRANSFER_LEN_SIZE + 2)) +#define MCHAN_CMD_FLAG_EVENT_ENABLE (1 << (MCHAN_TRANSFER_LEN_SIZE + 3)) +#define MCHAN_CMD_FLAG_INTERRUPT_ENABLE (1 << (MCHAN_TRANSFER_LEN_SIZE + 4)) +#define MCHAN_CMD_FLAG_BROADCAST_FINISH (1 << (MCHAN_TRANSFER_LEN_SIZE + 5)) +#if MCHAN_VERSION == 7 +#define MCHAN_CMD_FLAG_2D_TRANSFER_LOCAL \ + (1 << (MCHAN_TRANSFER_LEN_SIZE + 6)) // can only be used with MCHAN v7 +#endif +#define MCHAN_CMD_SHIFT_DIRECTION MCHAN_TRANSFER_LEN_SIZE + +#define MCHAN_CMD(len, dir, inc, loc_2d, ext_2d, int_en, event_en, broadcast) \ + (len | dir | inc | loc_2d | ext_2d | broadcast | int_en | event_en) + +typedef enum { + MCHAN_DMA_TRANSFER_DIRECTION_EXT2LOC = MCHAN_CMD_FLAG_DIRECTION_EXT2LOC, + MCHAN_DMA_TRANSFER_DIRECTION_LOC2EXT = MCHAN_CMD_FLAG_DIRECTION_LOC2EXT +} mchan_dma_transfer_direction_e; + +typedef struct { + int cmd; + int size; + + void *loc; + int loc_size_1d; + int loc_stride_1d; + + void *ext; + int ext_size_1d; + int ext_stride_1d; +} mchan_transfer_t; + +static int mchan_transfer_get_id() { return MCHAN_READ_CMD(); } + +static void mchan_transfer_push_1d(mchan_transfer_t trans) { + MCHAN_WRITE_CMD(trans.cmd); + MCHAN_WRITE_CMD(trans.loc); + MCHAN_WRITE_CMD(trans.ext); +} + +static void mchan_transfer_push_2d(mchan_transfer_t trans) { + MCHAN_WRITE_CMD(trans.cmd); + MCHAN_WRITE_CMD(trans.loc); + MCHAN_WRITE_CMD(trans.ext); +// MCHAN version 7 takes 2D "count" (length of 1D transfers) and stride in 2 +// steps, v7 takes it in 1 step with the stride shifted to the upper 16 bits. +#if MCHAN_VERSION == 7 + MCHAN_WRITE_CMD(trans.ext_size_1d); + MCHAN_WRITE_CMD(trans.ext_stride_1d); +#else + MCHAN_WRITE_CMD(trans.ext_size_1d | (trans.ext_stride_1d << 16)); +#endif +} + +static void mchan_transfer_push(mchan_transfer_t trans) { + MCHAN_WRITE_CMD(trans.cmd); + MCHAN_WRITE_CMD(trans.loc); + MCHAN_WRITE_CMD(trans.ext); + + if (trans.ext_size_1d < trans.size) { + MCHAN_WRITE_CMD(trans.ext_size_1d); + MCHAN_WRITE_CMD(trans.ext_stride_1d); + } + + if (trans.loc_size_1d < trans.size) { + MCHAN_WRITE_CMD(trans.loc_size_1d); + MCHAN_WRITE_CMD(trans.loc_stride_1d); + } +} + +static void mchan_transfer_free(int tid) { MCHAN_WRITE_STATUS(1 << tid); } + +static int mchan_transfer_busy(int tid) { + return MCHAN_READ_STATUS() & (1 << tid); +} + +static void mchan_transfer_wait(int tid) { +#if defined(MCHAN_EVENT) + while (mchan_transfer_busy(tid)) + eu_evt_maskWaitAndClr(1 << MCHAN_EVENT_BIT); +#elif defined(MCHAN_POLLED) + while (mchan_transfer_busy(tid)) + ; +#endif +} + +#endif diff --git a/TargetLibraries/GAP9/src/Util.c b/TargetLibraries/GAP9/src/Util.c new file mode 100644 index 0000000000..453ea9d21f --- /dev/null +++ b/TargetLibraries/GAP9/src/Util.c @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "DeeployGAP9Math.h" +#include +#include +#include + +// Overwrite weak function from DeeployBasicLibs +int deeploy_log(const char *__restrict fmt, ...) { + va_list args; + va_start(args, fmt); + int ret; + +#if defined(AM_PART_APOLLO4B) | defined(DAM_PART_APOLLO3) + ret = am_util_stdio_vprintf(fmt, args); +#else + ret = vprintf(fmt, args); +#endif + + va_end(args); + return ret; +} + +void *deeploy_malloc(const size_t size) { return malloc(size); } + +void deeploy_free(void *const ptr) { free(ptr); } diff --git a/TargetLibraries/GAP9/src/dory_dma.c b/TargetLibraries/GAP9/src/dory_dma.c new file mode 100644 index 0000000000..9bcd41d83c --- /dev/null +++ b/TargetLibraries/GAP9/src/dory_dma.c @@ -0,0 +1,214 @@ +/* + * SPDX-FileCopyrightText: 2020 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "dory_dma.h" + +#define log2(x) __builtin_pulp_fl1(x) + +#include "pmsis.h" + +#ifndef MCHAN_BASE_ADDR +#define MCHAN_BASE_ADDR \ + (CLUSTER_PERIPHERALS_ADDR + CLUSTER_MCHAN_OFFSET) // CLUSTER_MCHAN_ADDR +#endif +#define MCHAN_EVENT +// #define MCHAN_POLLED +#ifdef MCHAN_EVENT +#define MCHAN_EVENT_BIT (CLUSTER_IRQ_DMA0) // 8 +#endif +#include "mchan.h" + +#if defined(MCHAN_POLLED) +#define MCHAN_FLAGS (MCHAN_CMD_FLAG_INCREMENTAL) +#elif defined(MCHAN_EVENT) +#define MCHAN_FLAGS (MCHAN_CMD_FLAG_EVENT_ENABLE | MCHAN_CMD_FLAG_INCREMENTAL) +#elif defined(MCHAN_INTERRUPT) +#define MCHAN_FLAGS \ + (MCHAN_CMD_FLAG_INTERRUPT_ENABLE | MCHAN_CMD_FLAG_INCREMENTAL) +#endif + +#define MCHAN_FLAGS_1D (MCHAN_FLAGS) +#define MCHAN_FLAGS_2D (MCHAN_FLAGS | MCHAN_CMD_FLAG_2D_TRANSFER_EXTERNAL) + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +void dory_dma_memcpy_hwc_to_chw(DMA_copy *copy) { + int core_id = pi_core_id(); + int Log2Core = log2(log2(NUM_CORES)); + int number_of_copies_per_core = + (copy->length_1d_copy >> Log2Core) + + ((copy->length_1d_copy & (NUM_CORES - 1)) != 0); + int start_pixel, stop_pixel; // "pixel" is a misnomer; the CHANNELS are + // divided between the cores + // this function assumes that a DW tile is always as wide as the complete + // feature map (this is enforced by DORY's tiler) + start_pixel = MIN(number_of_copies_per_core * core_id, copy->length_1d_copy); + stop_pixel = + MIN(start_pixel + number_of_copies_per_core, copy->length_1d_copy); + void *ext = copy->ext + start_pixel; + void *loc = copy->loc + copy->number_of_1d_copies * + copy->number_of_2d_copies * start_pixel; + const int size_2d = copy->number_of_1d_copies * copy->number_of_2d_copies; + + for (int i = start_pixel; i < stop_pixel; i++) { + mchan_transfer_t trans = {.cmd = size_2d | + copy->dir << MCHAN_CMD_SHIFT_DIRECTION | + MCHAN_FLAGS_2D, + .size = size_2d, + .ext = ext, + .loc = loc, + .ext_size_1d = 1, // one byte at a time... + .ext_stride_1d = copy->stride_1d}; + mchan_transfer_push_2d(trans); +#ifdef ALWAYS_BLOCK_DMA_TRANSFERS // needed on GAP8 board + dory_dma_barrier(copy); +#endif + ext += 1; // next channel + loc += copy->number_of_1d_copies * copy->number_of_2d_copies; + } +} + +void dory_dma_memcpy_1d_async(DMA_copy *copy) { + if (pi_core_id() == 0) { + mchan_transfer_t trans = { + .cmd = copy->length_1d_copy * copy->number_of_1d_copies * + copy->number_of_2d_copies | + (copy->dir << MCHAN_CMD_SHIFT_DIRECTION) | MCHAN_FLAGS_1D, + .size = copy->length_1d_copy * copy->number_of_1d_copies * + copy->number_of_2d_copies, + .ext = copy->ext, + .loc = copy->loc}; + mchan_transfer_push_1d(trans); + } +} + +void dory_dma_memcpy_2d_async(DMA_copy *copy) { + if (pi_core_id() == 0) { + const int size_2d = copy->number_of_1d_copies * copy->length_1d_copy * + copy->number_of_2d_copies; + const int stride = + (copy->number_of_2d_copies == 1) ? copy->stride_1d : copy->stride_2d; + const int size_1d = (copy->number_of_2d_copies == 1) + ? copy->length_1d_copy + : copy->length_1d_copy * copy->number_of_1d_copies; + + mchan_transfer_t trans = {.cmd = size_2d | + copy->dir << MCHAN_CMD_SHIFT_DIRECTION | + MCHAN_FLAGS_2D, + .size = size_2d, + .ext = copy->ext, + .loc = copy->loc, + .ext_size_1d = size_1d, + .ext_stride_1d = stride}; + mchan_transfer_push_2d(trans); + } +} + +void dory_dma_memcpy_3d_async(DMA_copy *copy) { + int core_id = pi_core_id(); + if (core_id == 0) { + int Log2Core = log2(1); + int number_of_2d_copies_per_core = (copy->number_of_2d_copies >> Log2Core) + + ((copy->number_of_2d_copies & (0)) != 0); + int start_pixel, stop_pixel; + start_pixel = + MIN(number_of_2d_copies_per_core * core_id, copy->number_of_2d_copies); + stop_pixel = MIN(start_pixel + number_of_2d_copies_per_core, + copy->number_of_2d_copies); + void *ext = copy->ext + copy->stride_2d * start_pixel; + void *loc = copy->loc + + copy->length_1d_copy * copy->number_of_1d_copies * start_pixel; + const int size_2d = copy->number_of_1d_copies * copy->length_1d_copy; + + for (int i = start_pixel; i < stop_pixel; i++) { + mchan_transfer_t trans = {.cmd = size_2d | + copy->dir << MCHAN_CMD_SHIFT_DIRECTION | + MCHAN_FLAGS_2D, + .size = size_2d, + .ext = ext, + .loc = loc, + .ext_size_1d = copy->length_1d_copy, + .ext_stride_1d = copy->stride_1d}; + mchan_transfer_push_2d(trans); +#ifdef ALWAYS_BLOCK_DMA_TRANSFERS // needed on GAP8 board + // dory_dma_barrier(copy); +#endif + loc += size_2d; + ext += copy->stride_2d; + } + } +} + +void dory_dma_memcpy_async(DMA_copy *copy) { + if (copy->hwc_to_chw == 1) { + dory_dma_memcpy_hwc_to_chw(copy); + } else if ((copy->number_of_2d_copies == 1 && + copy->number_of_1d_copies == 1) || + (copy->stride_1d == copy->length_1d_copy && + copy->number_of_1d_copies * copy->length_1d_copy == + copy->stride_2d) || + (copy->number_of_2d_copies == 1 && + copy->length_1d_copy == copy->stride_1d)) { + dory_dma_memcpy_1d_async(copy); + } else if ((copy->number_of_2d_copies == 1) || + (copy->length_1d_copy == copy->stride_1d)) { // wrong! + dory_dma_memcpy_2d_async(copy); + } else { + dory_dma_memcpy_3d_async(copy); + } +} + +void dory_dma_memcpy_1d_mindims_async(DMA_copy *copy) { + mchan_transfer_t trans = { + .cmd = copy->mchan_cmd, .ext = copy->ext, .loc = copy->loc}; + mchan_transfer_push_1d(trans); +} + +void dory_dma_memcpy_2d_mindims_async(DMA_copy *copy) { + mchan_transfer_t trans = {.cmd = copy->mchan_cmd, + .ext = copy->ext, + .loc = copy->loc, + .ext_size_1d = copy->length_1d_copy, + .ext_stride_1d = copy->stride_1d}; + mchan_transfer_push_2d(trans); +} + +void dory_dma_memcpy_3d_mindims_async(DMA_copy *copy) { + void *ext = copy->ext; + void *loc = copy->loc; + const int length_2d_copy = + copy->mchan_cmd & ((1 << MCHAN_TRANSFER_LEN_SIZE) - 1); + + for (int i = 0; i < copy->number_of_2d_copies; i++) { + mchan_transfer_t trans = {.cmd = copy->mchan_cmd, + .ext = ext, + .loc = loc, + .ext_size_1d = copy->length_1d_copy, + .ext_stride_1d = copy->stride_1d}; + mchan_transfer_push_2d(trans); + loc += length_2d_copy; + ext += copy->stride_2d; +#ifdef ALWAYS_BLOCK_DMA_TRANSFERS // needed on GAP8 board + // dory_dma_barrier(copy); +#endif + } +} + +void dory_dma_memcpy_mindims_async(DMA_copy *copy) { + if (copy->number_of_2d_copies == 1 && copy->number_of_1d_copies == 1) { + dory_dma_memcpy_1d_mindims_async(copy); + } else if (copy->number_of_2d_copies == 1) { + dory_dma_memcpy_2d_mindims_async(copy); + } else { + dory_dma_memcpy_3d_mindims_async(copy); + } +} + +void dory_dma_free(DMA_copy *copy) { mchan_transfer_free(copy->tid); } + +void dory_dma_barrier(DMA_copy *copy) { mchan_transfer_wait(copy->tid); } + +int dory_dma_allocate() { return mchan_transfer_get_id(); } diff --git a/TargetLibraries/GAP9/src/dory_mem.c b/TargetLibraries/GAP9/src/dory_mem.c new file mode 100644 index 0000000000..7564d2ee8d --- /dev/null +++ b/TargetLibraries/GAP9/src/dory_mem.c @@ -0,0 +1,176 @@ +/* + * SPDX-FileCopyrightText: 2023 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "dory_mem.h" +#include "bsp/bsp.h" +// #include "bsp/flash.h" +#include "bsp/fs.h" +#include "bsp/fs/readfs.h" +// #include "bsp/ram.h" +#include "pmsis.h" + +#ifdef USE_HYPERFLASH +#include "bsp/flash/hyperflash.h" +typedef struct pi_hyperflash_conf flash_conf_t; +#define flash_conf_init(conf) pi_hyperflash_conf_init(conf) +#elif defined USE_SPIFLASH +#include "bsp/flash/spiflash.h" +typedef struct pi_spiflash_conf flash_conf_t; +#define flash_conf_init(conf) pi_spiflash_conf_init(conf) +#elif defined USE_MRAM +typedef struct pi_mram_conf flash_conf_t; +#define flash_conf_init(conf) pi_mram_conf_init(conf) +#else +typedef struct pi_default_flash_conf flash_conf_t; +#define flash_conf_init(conf) pi_default_flash_conf_init(conf) +#endif + +#ifdef USE_HYPERRAM +#include "bsp/ram/hyperram.h" +typedef struct pi_hyperram_conf ram_conf_t; +#define ram_conf_init(conf) pi_hyperram_conf_init(conf) +#else +typedef struct pi_default_ram_conf ram_conf_t; +#define ram_conf_init(conf) pi_default_ram_conf_init(conf) +#endif + +#define BUFFER_SIZE 2048 // 128 +static uint8_t buffer[BUFFER_SIZE]; + +static struct pi_device flash; +static flash_conf_t flash_conf; + +static struct pi_device fs; +static struct pi_readfs_conf fs_conf; + +struct pi_device ram; +static ram_conf_t ram_conf; + +void open_fs() { + // SCHEREMO: Fix FS + // Open filesystem on flash. + pi_readfs_conf_init(&fs_conf); + fs_conf.fs.flash = &flash; + pi_open_from_conf(&fs, &fs_conf); + if (pi_fs_mount(&fs)) { + printf("ERROR: Cannot mount filesystem! Exiting...\n"); + pmsis_exit(-2); + } +} + +void mem_init() { + flash_conf_init(&flash_conf); + pi_open_from_conf(&flash, &flash_conf); + if (pi_flash_open(&flash)) { + printf("ERROR: Cannot open flash! Exiting...\n"); + pmsis_exit(-1); + } + + ram_conf_init(&ram_conf); + pi_open_from_conf(&ram, &ram_conf); + if (pi_ram_open(&ram)) { + printf("ERROR: Cannot open ram! Exiting...\n"); + pmsis_exit(-3); + } +} + +struct pi_device *get_ram_ptr() { return &ram; } + +void *ram_malloc(size_t size) { + void *ptr = NULL; + pi_ram_alloc(&ram, (uint32_t *)&ptr, size); + return ptr; +} + +void ram_free(void *ptr, size_t size) { + pi_ram_free(&ram, (uint32_t)ptr, size); +} + +void ram_read(void *dest, void *src, const size_t size) { + pi_ram_read(&ram, (uint32_t)src, dest, size); +} + +void ram_write(void *dest, void *src, const size_t size) { + pi_ram_write(&ram, (uint32_t)dest, src, size); +} + +void *cl_ram_malloc(size_t size) { + uint32_t addr; + pi_cl_ram_alloc_req_t req; + pi_cl_ram_alloc(&ram, size, &req); + pi_cl_ram_alloc_wait(&req, &addr); + return (void *)addr; +} + +void cl_ram_free(void *ptr, size_t size) { + pi_cl_ram_free_req_t req; + pi_cl_ram_free(&ram, (uint32_t)ptr, size, &req); + pi_cl_ram_free_wait(&req); +} + +void cl_ram_read(void *dest, void *src, const size_t size) { + pi_cl_ram_req_t req; + pi_cl_ram_read(&ram, (uint32_t)src, dest, size, &req); + pi_cl_ram_read_wait(&req); +} + +void cl_ram_write(void *dest, void *src, const size_t size) { + pi_cl_ram_req_t req; + pi_cl_ram_write(&ram, (uint32_t)dest, src, size, &req); + pi_cl_ram_write_wait(&req); +} + +size_t load_file_to_ram(const void *dest, const char *filename) { + pi_fs_file_t *fd = pi_fs_open(&fs, filename, 0); + if (fd == NULL) { + printf("ERROR: Cannot open file %s! Exiting...", filename); + pmsis_exit(-4); + } + + size_t size = fd->size; + size_t load_size = 0; + size_t remaining_size = size; + + size_t offset = 0; + do { + + remaining_size = size - offset; + load_size = BUFFER_SIZE < remaining_size ? BUFFER_SIZE : remaining_size; + + pi_cl_fs_req_t req; + pi_cl_fs_read(fd, buffer, load_size, &req); + pi_cl_fs_wait(&req); + cl_ram_write(dest + offset, buffer, load_size); + offset += load_size; + } while (offset < size); + + return offset; +} + +size_t load_file_to_local(const void *dest, const char *filename) { + pi_fs_file_t *fd = pi_fs_open(&fs, filename, 0); + if (fd == NULL) { + printf("ERROR: Cannot open file %s! Exiting...", filename); + pmsis_exit(-4); + } + + const size_t size = fd->size; + size_t remaining_size = size; + size_t offset = 0; + pi_cl_fs_req_t req; + + while (offset < size) { + remaining_size = size - offset; + size_t load_size = + BUFFER_SIZE < remaining_size ? BUFFER_SIZE : remaining_size; + pi_cl_fs_read(fd, buffer, load_size, &req); + pi_cl_fs_wait(&req); + memcpy(dest + offset, buffer, load_size); + offset += load_size; + } + + return offset; +} diff --git a/TargetLibraries/Generic/src/BatchNorm_fp32.c b/TargetLibraries/Generic/src/BatchNorm_fp32.c index 9b30a30207..d12f89a293 100644 --- a/TargetLibraries/Generic/src/BatchNorm_fp32.c +++ b/TargetLibraries/Generic/src/BatchNorm_fp32.c @@ -4,6 +4,10 @@ #include "DeeployBasicMath.h" +#ifdef DEEPLOY_GAP9_PLATFORM +#include +#endif + void BatchNorm_fp32(const float32_t *input, const float32_t *gamma, const float32_t *beta, const float32_t *mean, const float32_t *var, float32_t *output, int N, int C, diff --git a/cmake/simulation.cmake b/cmake/simulation.cmake index 756da8d282..d3d87ab311 100644 --- a/cmake/simulation.cmake +++ b/cmake/simulation.cmake @@ -73,19 +73,20 @@ endfunction() # binary on the gvsoc simulator. To give extra flags to the gvsoc command, set # the GVSOC_EXTRA_FLAGS variable. macro(add_gvsoc_emulation name target) - if(NOT DEFINED ENV{GVSOC_INSTALL_DIR}) + if(NOT DEFINED GVSOC_INSTALL_DIR) message(FATAL_ERROR "Environment variable GVSOC_INSTALL_DIR not set") endif() set(GVSOC_WORKDIR ${CMAKE_BINARY_DIR}/gvsoc_workdir) make_directory(${GVSOC_WORKDIR}) - set(GVSOC_EXECUTABLE "$ENV{GVSOC_INSTALL_DIR}/bin/gvsoc") + set(GVSOC_EXECUTABLE "${GVSOC_INSTALL_DIR}/bin/gvsoc") set(GVSOC_BINARY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${name}") add_custom_target(gvsoc_${name} DEPENDS ${name} + WORKING_DIRECTORY ${GVSOC_WORKDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ || true COMMAND ${GVSOC_EXECUTABLE} --target=${target} --binary ${GVSOC_BINARY} --work-dir=${GVSOC_WORKDIR} ${GVSOC_EXTRA_FLAGS} image flash run COMMENT "Simulating deeploytest ${name} with gvsoc for the target ${target}" POST_BUILD USES_TERMINAL - VERBATIM ) endmacro() From a7ac74eb875da05e037cd90a4d33d1bd29d65301 Mon Sep 17 00:00:00 2001 From: Philip Wiese Date: Thu, 13 Nov 2025 17:58:26 +0100 Subject: [PATCH 04/23] Minor cleanup --- DeeployTest/testUtils/testRunner.py | 5 ++--- cmake/common.cmake | 5 ----- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/DeeployTest/testUtils/testRunner.py b/DeeployTest/testUtils/testRunner.py index e479467c0d..0ac696afe8 100644 --- a/DeeployTest/testUtils/testRunner.py +++ b/DeeployTest/testUtils/testRunner.py @@ -378,7 +378,7 @@ def configure_cmake_project(self): command = f"$CMAKE -D TOOLCHAIN={self._args.toolchain} -D GVSOC_INSTALL_DIR={self._dir_gvsoc} -D TOOLCHAIN_INSTALL_DIR={self._dir_toolchain} -D GENERATED_SOURCE={self._dir_gen} -D platform={self._platform} {self.cmake_args} -B {self._dir_build} -D TESTNAME={self._name_test} .." if self._args.verbose >= 3: - command = "VERBOSE=1 " + command + command = "VERBOSE=1 " + command + " --log-level debug" log.debug(f"[TestRunner] Cmake Command: {command}") @@ -387,8 +387,7 @@ def configure_cmake_project(self): raise RuntimeError(f"Configuring cMake project failed on {self._dir_test}") def build_binary(self): - command = f"$CMAKE --build {self._dir_build} --target {self._name_test}" - + command = "$CMAKE" if self._args.verbose >= 3: command = "VERBOSE=1 " + command diff --git a/cmake/common.cmake b/cmake/common.cmake index 18437219d5..9d1aaba7d2 100644 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -2,17 +2,12 @@ # # SPDX-License-Identifier: Apache-2.0 -set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) -set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) - set(use_dma 1 CACHE STRING "Enable DMA trasfers") add_compile_definitions( USE_DMA=${use_dma} ) -add_library(deeploylib INTERFACE) - add_compile_options( -std=gnu99 From f916db82b939d0aa191912e948bb0bb2d1a1dfc2 Mon Sep 17 00:00:00 2001 From: Philip Wiese Date: Thu, 13 Nov 2025 17:58:31 +0100 Subject: [PATCH 05/23] Update Readme --- GAP9.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 59 insertions(+) create mode 100644 GAP9.md diff --git a/GAP9.md b/GAP9.md new file mode 100644 index 0000000000..e216af23c3 --- /dev/null +++ b/GAP9.md @@ -0,0 +1,57 @@ +## Using Deeploy with GAP9 + +> ⚠️ **IMPORTANT NOTE** +> This is a work in progress. The GAP9 support in Deeploy is experimental and may not be fully functional. + +To use Deeploy with GAP9, a custom Docker container is required because the official Deeploy Docker image does yet not include the necessary SDKs and dependencies for GAP9 development, because they are not publicly available. + +### Build The Docker Container + +To use SSH keys for accessing private repositories during the Docker build process, you need to start the SSH agent and add your SSH private key before running the Docker build command. You can do this by executing the following commands in your terminal: +```sh +cd Container +eval $(ssh-agent) + +# Add your SSH private key to the agent +ssh-add ~/.ssh/id_ed25519 +``` + +To build a local version of the Deeploy Docker image with GAP9 support using the upstream toolchain image, run: +```sh +# Build the Deeploy image with the upstream toolchain image +make deeploy DEEPOY_IMAGE=deeploy:gap9 +``` + +Or, to build both the toolchain and Deeploy images locally, use: +```sh +# To build the toolchain container +make toolchain TOOLCHAIN_IMAGE=deeploy-toolchain:gap9 DEEPOY_IMAGE=deeploy:gap9 + +# To build the Deeploy container with the local toolchain image +make deeploy TOOLCHAIN_IMAGE=deeploy-toolchain:gap9 DEEPOY_IMAGE=deeploy:gap9 +``` + +### Use The Docker Container +Then you can create and start the container in interactive mode with: + +```sh +docker run -it --name deeploy_gap9 -v $(pwd):/app/Deeploy deeploy:gap9 +``` + +Before running the test, you need to set some environment variables: +```sh +source /app/install/gap9-sdk/.gap9-venv/bin/activate +source /app/install/gap9-sdk/configs/gap9_evk_audio.sh +``` +Install Deeploy inside the container in editable mode: + +```sh +cd /app/Deeploy +pip install -e . --extra-index-url=https://pypi.ngc.nvidia.com +``` + +```sh +cd /app/Deeploy/DeeployTest +python testRunner_gap9.py -t Tests/testMatMul +python testRunner_tiled_gap9.py -t Tests/testMatMul +``` \ No newline at end of file diff --git a/README.md b/README.md index d27b935b2f..8fba6dab49 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ python testRunner_softhier.py -t Tests/Adder --toolchain=GCC python testRunner_chimera.py -t Tests/Adder ``` +For the experimental support of GAP9, please refer to the [GAP9.md](GAP9.md) file. + To restart and connect to the container, run: ``` docker start -i deeploy_main From 3cd6e29efcb5296a07443d86a5847a36754f7074 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 14 Nov 2025 20:10:18 +0000 Subject: [PATCH 06/23] [GAP9] Fix DeeployTest.c nested team fork issue --- DeeployTest/Platforms/GAP9/src/deeploytest.c | 29 ++++++-------------- DeeployTest/testUtils/codeGenerate.py | 3 ++ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/DeeployTest/Platforms/GAP9/src/deeploytest.c b/DeeployTest/Platforms/GAP9/src/deeploytest.c index e44455d741..465e529c77 100644 --- a/DeeployTest/Platforms/GAP9/src/deeploytest.c +++ b/DeeployTest/Platforms/GAP9/src/deeploytest.c @@ -13,7 +13,7 @@ #include "testinputs.h" #include "testoutputs.h" -#define MAINSTACKSIZE 8000 +// RW: Remove MAINSTACKSIZE because gap9-sdk does not use it #define SLAVESTACKSIZE 3800 struct pi_device cluster_dev; @@ -61,25 +61,14 @@ void CL_CompareFloat(void *arg) { pi_cl_team_fork(NUM_CORES, CompareFloatOnCluster, arg); } -void PE_RunNetwork(void *arg) { -#ifndef CI - uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); - printf("[%d %d] Run Network!\n", cluster_id, core_id); -#endif - RunNetwork(pi_core_id(), NUM_CORES); -} - -void CL_RunNetwork(void *arg) { - pi_cl_team_fork(NUM_CORES, PE_RunNetwork, NULL); +void InitNetworkWrapper(void *args) { + (void)args; + InitNetwork(pi_core_id(), pi_cl_cluster_nb_cores()); } -void PE_InitNetwork(void *arg) { -#ifndef CI - uint32_t core_id = pi_core_id(), cluster_id = pi_cluster_id(); - printf("[%d %d] Init Network!\n", cluster_id, core_id); -#endif - - InitNetwork(pi_core_id(), NUM_CORES); +void RunNetworkWrapper(void *args) { + (void)args; + RunNetwork(pi_core_id(), pi_cl_cluster_nb_cores()); } int main(void) { @@ -104,7 +93,7 @@ int main(void) { struct pi_cluster_task cluster_task; - pi_cluster_task(&cluster_task, PE_InitNetwork, NULL); + pi_cluster_task(&cluster_task, InitNetworkWrapper, NULL); cluster_task.slave_stack_size = SLAVESTACKSIZE; pi_cluster_send_task_to_cl(&cluster_dev, &cluster_task); @@ -122,7 +111,7 @@ int main(void) { printf("Input copied\r\n"); #endif - pi_cluster_task(&cluster_task, CL_RunNetwork, NULL); + pi_cluster_task(&cluster_task, RunNetworkWrapper, NULL); cluster_task.slave_stack_size = SLAVESTACKSIZE; ResetTimer(); StartTimer(); diff --git a/DeeployTest/testUtils/codeGenerate.py b/DeeployTest/testUtils/codeGenerate.py index 878bc42014..370d138a5a 100644 --- a/DeeployTest/testUtils/codeGenerate.py +++ b/DeeployTest/testUtils/codeGenerate.py @@ -191,6 +191,9 @@ def generateTestNetworkImplementation(deployer: NetworkDeployer, verbosityCfg: C } void InitNetwork(__attribute__((unused)) uint32_t core_id, __attribute__((unused)) uint32_t numThreads){ + #ifndef CI + printf("[%d %d] Init Network!\\n", pi_cluster_id(), pi_core_id()); + #endif """ retStr += deployer.generateEngineInitializationCode() retStr += deployer.generateBufferAllocationCode() From 9ca45956d52d5aa8dfacbc4f56920b7395726584 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 14 Nov 2025 20:20:55 +0000 Subject: [PATCH 07/23] [GAP9]Fix GCC segmentation fault in Transpose template syntax --- Deeploy/Targets/PULPOpen/Templates/TransposeTemplate.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Deeploy/Targets/PULPOpen/Templates/TransposeTemplate.py b/Deeploy/Targets/PULPOpen/Templates/TransposeTemplate.py index 65c2285e24..64143a9dd6 100644 --- a/Deeploy/Targets/PULPOpen/Templates/TransposeTemplate.py +++ b/Deeploy/Targets/PULPOpen/Templates/TransposeTemplate.py @@ -93,10 +93,13 @@ def alignToContext(self, ctxt: NetworkContext, referenceTemplate = PULPTransposeTemplate(""" // Transpose ${data_in_shape} -> ${data_out_shape} (Name: ${nodeName}, Op: ${nodeOp}) ${tileHeader} +// RW: GCC Segmentation fault +${data_in_type.referencedType.typeName} (*src)${shapeStr} = (${data_in_type.referencedType.typeName} (*)${shapeStr})<%text>${data_in}; +${data_in_type.referencedType.typeName} (*dst)${outShapeStr} = (${data_in_type.referencedType.typeName} (*)${outShapeStr})<%text>${data_out}; % for idx, i in enumerate(perm): ${forLoops[idx]} % endfor -((${data_in_type.referencedType.typeName} (*)${outShapeStr})<%text>${data_out})${outAccessStr} = ((${data_in_type.referencedType.typeName} (*)${shapeStr})<%text>${data_in})${accessStr}; +dst${outAccessStr} = src${accessStr}; % for idx, i in enumerate(perm): } % endfor From 7e779912f36e96d352a6a371a3683f9edb05ddc5 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sat, 15 Nov 2025 11:53:53 +0000 Subject: [PATCH 08/23] [GAP9] Link PULP-NN --- CMakeLists.txt | 5 ++--- Deeploy/Targets/GAP9/Platform.py | 1 + DeeployTest/Platforms/GAP9/CMakeLists.txt | 8 ++++++++ TargetLibraries/GAP9/CMakeLists.txt | 12 ++++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5880216fec..d19feef2c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,14 +235,13 @@ if(platform STREQUAL GAP9) ) add_subdirectory(TargetLibraries/Generic) + add_subdirectory(DeeployTest) + setupos(${TESTNAME}) add_subdirectory(TargetLibraries/GAP9) target_include_directories(deeploygap9 PUBLIC TargetLibraries/Generic/inc) - add_subdirectory(DeeployTest) target_link_libraries(deeploylib INTERFACE deeploybasic deeploygap9) - setupos(${TESTNAME}) - endif() if(platform STREQUAL Snitch) diff --git a/Deeploy/Targets/GAP9/Platform.py b/Deeploy/Targets/GAP9/Platform.py index 633b225754..dd24c94de2 100644 --- a/Deeploy/Targets/GAP9/Platform.py +++ b/Deeploy/Targets/GAP9/Platform.py @@ -87,6 +87,7 @@ class GAP9StructBuffer(StructBuffer): _includeList = [ "pmsis.h", "DeeployGAP9Math.h", + "pulp_nn_kernels.h" ] diff --git a/DeeployTest/Platforms/GAP9/CMakeLists.txt b/DeeployTest/Platforms/GAP9/CMakeLists.txt index ec79db2a5d..b1d32659f6 100644 --- a/DeeployTest/Platforms/GAP9/CMakeLists.txt +++ b/DeeployTest/Platforms/GAP9/CMakeLists.txt @@ -23,4 +23,12 @@ target_link_libraries(${ProjectId} PRIVATE network deeploylib) target_compile_options(${ProjectId} INTERFACE network) add_gvsoc_emulation(${ProjectId} "gap9.evk") +# RW: Waive sign comparison warnings from pulp_nn_utils.h +target_compile_options(network PRIVATE + -Wno-sign-compare + -Wno-pointer-sign + -Wno-unknown-pragmas + -Wno-error + ) + link_compile_dump(${TESTNAME}) diff --git a/TargetLibraries/GAP9/CMakeLists.txt b/TargetLibraries/GAP9/CMakeLists.txt index a39df465f6..7e9809af63 100644 --- a/TargetLibraries/GAP9/CMakeLists.txt +++ b/TargetLibraries/GAP9/CMakeLists.txt @@ -28,3 +28,15 @@ target_compile_options(deeploygap9 PRIVATE ) target_link_libraries(deeploygap9 PUBLIC pmsis) + +#RW: Link PULP-NN +#RW: Set PULP-NN version and bitwidth for pulp-nn-mixed +set(PULPNNVERSION XPULPV2) +set(PULPNNBITWIDTH 32) +add_compile_definitions(NUM_CORES=${NUM_CORES}) +add_subdirectory(third_party/pulp-nn-mixed) + +#RW: GCC not recognizing -Wno-typedef-redefinition +target_compile_options(pulp-nn-mixed PRIVATE -Wno-error) +target_link_libraries(deeploygap9 PUBLIC pulp-nn-mixed) + From 294d83af740f8f9fffe6bb3cb021ada1782f9087 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sat, 15 Nov 2025 13:28:30 +0000 Subject: [PATCH 09/23] [GAP9] OpRepre n_cores Missing --- Deeploy/Targets/GAP9/Platform.py | 3 ++- Deeploy/Targets/PULPOpen/Deployer.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Deeploy/Targets/GAP9/Platform.py b/Deeploy/Targets/GAP9/Platform.py index dd24c94de2..346f631e8a 100644 --- a/Deeploy/Targets/GAP9/Platform.py +++ b/Deeploy/Targets/GAP9/Platform.py @@ -93,8 +93,9 @@ class GAP9StructBuffer(StructBuffer): class GAP9ClusterEngine(DeploymentEngine): - def __init__(self, name: str, Mapping = PULPMapping, initCode = "", includeList = _includeList) -> None: + def __init__(self, name: str, Mapping = PULPMapping, initCode = "", includeList = _includeList, n_cores: int = 8) -> None: super().__init__(name, Mapping, initCode, includeList) + self.n_cores = n_cores class GAP9Platform(DeploymentPlatform): diff --git a/Deeploy/Targets/PULPOpen/Deployer.py b/Deeploy/Targets/PULPOpen/Deployer.py index bceea01f4d..4162c4e9a2 100644 --- a/Deeploy/Targets/PULPOpen/Deployer.py +++ b/Deeploy/Targets/PULPOpen/Deployer.py @@ -15,6 +15,7 @@ from Deeploy.DeeployTypes import ConstantBuffer, DeploymentPlatform, NodeTemplate, TopologyOptimizer, VariableBuffer from Deeploy.Targets.Generic.TopologyOptimizationPasses.Passes import ReshapeConstOptPass, TransposeConstOptPass, \ TransposeMergePass, TransposeNoPermOptPass, TransposeSplitPass +from Deeploy.Targets.GAP9.Platform import GAP9ClusterEngine from Deeploy.Targets.PULPOpen.Platform import PULPClusterEngine from Deeploy.Targets.PULPOpen.TopologyOptimizationPasses.Passes import RQAddTransposeSquashPass @@ -69,7 +70,7 @@ def annotateNCores(self) -> None: node = layer.node engine = self._selectEngine(node) opRepr = layer.mapper.parser.operatorRepresentation - if isinstance(engine, PULPClusterEngine): + if isinstance(engine, (PULPClusterEngine, GAP9ClusterEngine)): opRepr["n_cores"] = engine.n_cores def bind(self) -> bool: From 4946ed50900e09b4cb1fa134eff3ffc89068dfc0 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sat, 15 Nov 2025 15:32:01 +0000 Subject: [PATCH 10/23] [GAP9] LInk Math and PULP Kernels --- TargetLibraries/GAP9/CMakeLists.txt | 14 ++++++++++++-- TargetLibraries/PULPOpen/src/DWConvolution_fp32.c | 1 + TargetLibraries/PULPOpen/src/GELU.c | 1 + TargetLibraries/PULPOpen/src/Layernorm.c | 2 ++ TargetLibraries/PULPOpen/src/Softmax.c | 1 + 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/TargetLibraries/GAP9/CMakeLists.txt b/TargetLibraries/GAP9/CMakeLists.txt index 7e9809af63..947096f6bf 100644 --- a/TargetLibraries/GAP9/CMakeLists.txt +++ b/TargetLibraries/GAP9/CMakeLists.txt @@ -6,6 +6,11 @@ file(GLOB_RECURSE SOURCES "src/**" ) +# RW: Include PULPOpen sources but exclude dory_mem related files +file(GLOB_RECURSE PULPOPEN_SOURCES "../PULPOpen/src/**") +list(FILTER PULPOPEN_SOURCES EXCLUDE REGEX ".*dory_mem.*") +list(APPEND SOURCES ${PULPOPEN_SOURCES}) + if(NOT DEFINED ENV{GAP_SDK_HOME}) message(FATAL_ERROR "Environment variable GAP_SDK_HOME not set.") endif() @@ -14,6 +19,7 @@ add_deeploy_library(deeploygap9 STATIC ${SOURCES}) target_include_directories(deeploygap9 PUBLIC ${CMAKE_CURRENT_LIST_DIR}/inc + ${CMAKE_CURRENT_LIST_DIR}/../PULPOpen/inc ) target_compile_options(deeploygap9 PUBLIC @@ -22,9 +28,11 @@ target_compile_options(deeploygap9 PUBLIC target_compile_options(deeploygap9 PRIVATE -Wno-implicit-function-declaration - -Wno-implicit-int-conversion -Wno-sign-conversion -Wno-sign-compare + -Wno-type-limits + -Wno-attributes + -Wno-incompatible-pointer-types ) target_link_libraries(deeploygap9 PUBLIC pmsis) @@ -36,7 +44,9 @@ set(PULPNNBITWIDTH 32) add_compile_definitions(NUM_CORES=${NUM_CORES}) add_subdirectory(third_party/pulp-nn-mixed) -#RW: GCC not recognizing -Wno-typedef-redefinition +#RW: GCC not recognizing -Wno-typedef-redefinition defined in PULP-NN CMakelist target_compile_options(pulp-nn-mixed PRIVATE -Wno-error) target_link_libraries(deeploygap9 PUBLIC pulp-nn-mixed) +target_link_libraries(deeploygap9 PUBLIC m) + diff --git a/TargetLibraries/PULPOpen/src/DWConvolution_fp32.c b/TargetLibraries/PULPOpen/src/DWConvolution_fp32.c index b0a06c66eb..1ec352346e 100644 --- a/TargetLibraries/PULPOpen/src/DWConvolution_fp32.c +++ b/TargetLibraries/PULPOpen/src/DWConvolution_fp32.c @@ -6,6 +6,7 @@ #include "DeeployPULPMath.h" #include "pmsis.h" +#include void PULP_DW_Conv2d_Im2Col_fp32_fp32_fp32_HWC( const float32_t *__restrict__ pSrcA, uint32_t H, uint32_t W, uint32_t C, diff --git a/TargetLibraries/PULPOpen/src/GELU.c b/TargetLibraries/PULPOpen/src/GELU.c index 281d4674d0..62093d58eb 100644 --- a/TargetLibraries/PULPOpen/src/GELU.c +++ b/TargetLibraries/PULPOpen/src/GELU.c @@ -7,6 +7,7 @@ #include "pmsis.h" #include "DeeployPULPMath.h" +#include #define M_PI 3.14159265358979323846 diff --git a/TargetLibraries/PULPOpen/src/Layernorm.c b/TargetLibraries/PULPOpen/src/Layernorm.c index f8387ab5e2..73d1bbab58 100644 --- a/TargetLibraries/PULPOpen/src/Layernorm.c +++ b/TargetLibraries/PULPOpen/src/Layernorm.c @@ -8,6 +8,8 @@ #include "DeeployPULPMath.h" +#include + void PULP_Layernorm_fp32_fp32(float32_t *data_in, float32_t *data_out, float32_t *scale, float32_t *bias, float32_t epsilon, uint32_t size, diff --git a/TargetLibraries/PULPOpen/src/Softmax.c b/TargetLibraries/PULPOpen/src/Softmax.c index 3fd60111fe..00678be825 100644 --- a/TargetLibraries/PULPOpen/src/Softmax.c +++ b/TargetLibraries/PULPOpen/src/Softmax.c @@ -6,6 +6,7 @@ #include "DeeployPULPMath.h" #include "pmsis.h" +#include void PULPSoftmax_u8_u8(uint8_t *data_in, uint8_t *data_out, uint32_t *lastDimBuffer, uint32_t size, From a08b6fd95f04aadb443b94e3cab7a9881e16b555 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Mon, 17 Nov 2025 17:01:05 +0000 Subject: [PATCH 11/23] [GAP9] Replace MCHAN DMA with cl_dma.h API and Decouple deployer form PULPOpen --- Deeploy/Targets/GAP9/Bindings.py | 403 +++++++++++++++++++++++ Deeploy/Targets/GAP9/DMA/ClDma.py | 85 +++++ Deeploy/Targets/GAP9/DMA/__init__.py | 3 + Deeploy/Targets/GAP9/Deployer.py | 58 ++++ Deeploy/Targets/GAP9/Platform.py | 153 ++++++++- Deeploy/Targets/GAP9/Tiler.py | 166 ++++++++++ DeeployTest/testUtils/platformMapping.py | 21 +- 7 files changed, 883 insertions(+), 6 deletions(-) create mode 100644 Deeploy/Targets/GAP9/Bindings.py create mode 100644 Deeploy/Targets/GAP9/DMA/ClDma.py create mode 100644 Deeploy/Targets/GAP9/DMA/__init__.py create mode 100644 Deeploy/Targets/GAP9/Deployer.py create mode 100644 Deeploy/Targets/GAP9/Tiler.py diff --git a/Deeploy/Targets/GAP9/Bindings.py b/Deeploy/Targets/GAP9/Bindings.py new file mode 100644 index 0000000000..6bb2053024 --- /dev/null +++ b/Deeploy/Targets/GAP9/Bindings.py @@ -0,0 +1,403 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +""" +GAP9-specific bindings using cl_dma.h API instead of low-level MCHAN. + +This module provides GAP9-specific DMA and code transformations that use +the PMSIS standard cl_dma API for better portability and cleaner code. +""" + +import itertools + +from Deeploy.AbstractDataTypes import PointerClass +from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, float32_t, \ + int8_t, int32_t, int64_t, uint8_t +from Deeploy.DeeployTypes import CodeTransformation, NodeBinding +from Deeploy.FutureExtension.Bindings.AutoFutureBinding import AutoFutureBinding +from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ + MemoryManagementGeneration, MemoryPassthroughGeneration +from Deeploy.FutureExtension.CodeTransformationPasses.FutureCodeTransformation import FutureGeneration +from Deeploy.TilingExtension.CodeTransformationPasses.TilingVariableReplacement import TilingVariableReplacement, \ + TilingVariableReplacementUpdate +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterSynch import PULPSynchCoresPass +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterTiling import PULPClusterTiling +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPL3Tiling import PULPL3Tiling +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPProfileUntiled import PULPProfileUntiled +from Deeploy.Targets.PULPOpen.DMA.L3Dma import l3DmaHack +from Deeploy.Targets.PULPOpen.Bindings import TilingCallClosure, ForkClosure, \ + MemoryAwareFunctionCallClosure, L3MemoryAwareFunctionCallClosure, MemoryAwareForkTransformer +from Deeploy.Targets.PULPOpen.DataTypes import PULPDMAFuture +from Deeploy.Targets.GAP9.DMA.ClDma import ClDma + +# Import templates from PULPOpen and Generic +from Deeploy.Targets.Generic.Templates import AddTemplate, ConcatTemplate, DequantTemplate, FloatReduceMeanTemplate, \ + FloatReduceSumTemplate, GatherTemplate, QuantTemplate, RQSiGELUTemplate, SliceTemplate, iHardswishTemplate +from Deeploy.Targets.Generic.TypeCheckers import AddChecker, ConcatChecker, ConvChecker, DequantChecker, \ + GatherChecker, GELUChecker, GEMMChecker, HardswishChecker, LayerNormChecker, MatMulChecker, MulChecker, \ + QuantChecker, ReduceMeanChecker, ReluChecker, ReshapeChecker, RQAddChecker, RQHardswishChecker, SGDChecker, \ + SliceChecker, SoftmaxChecker, SoftmaxCrossEntropyLossChecker, TransposeChecker +from Deeploy.Targets.PULPOpen.Templates import ConvTemplate, DMASliceTemplate, FloatAddTemplate, FloatConvTemplate, \ + FloatGELUTemplate, FloatGemmTemplate, FloatLayernormTemplate, FloatMatMulTemplate, FloatMaxPoolTemplate, \ + FloatMulTemplate, FloatReluTemplate, FloatSoftmaxTemplate, GEMMTemplate, MatrixVectorTemplate, MaxPool2DTemplate, \ + MulTemplate, ReduceMeanTemplate, RequantShiftTemplate, ReshapeTemplate, RQAddTemplate, RQSiHardswishTemplate, \ + SGDTemplate, SoftmaxCrossEntropyLossTemplate, TallGEMMTemplate, TransposeTemplate, UniformRequantShiftTemplate, \ + iRMSNormTemplate, iSoftmaxTemplate +from Deeploy.Targets.PULPOpen.TypeCheckers import PULPConvChecker, PULPLinearChecker, PULPMaxPoolChecker, \ + PULPRequantShiftChecker + + +# GAP9-specific transformer using cl_dma.h API +GAP9Transformer = CodeTransformation([ + TilingVariableReplacement("L1"), + TilingCallClosure(writeback = False), + PULPSynchCoresPass(), + ForkClosure(writeback = False, generateStruct = True), + TilingVariableReplacementUpdate("L1"), + PULPClusterTiling("L2", "L1", ClDma()), # Use ClDma instead of MchanDma + ArgumentStructGeneration(), + MemoryManagementGeneration("L1"), + TilingVariableReplacement("L2"), + MemoryAwareFunctionCallClosure(writeback = False, generateStruct = True), + PULPL3Tiling("L3", "L2", l3DmaHack), + PULPProfileUntiled(), + ArgumentStructGeneration(), + L3MemoryAwareFunctionCallClosure(writeback = False), + MemoryManagementGeneration("L2"), + MemoryManagementGeneration("L3.*"), + MemoryManagementGeneration(), +]) + +# GAP9-specific cluster transformer using cl_dma.h API +GAP9ClusterTransformer = CodeTransformation([ + TilingVariableReplacement("L1"), + TilingCallClosure(writeback = False, generateStruct = True), + TilingVariableReplacementUpdate("L1"), + PULPClusterTiling("L2", "L1", ClDma()), # Use ClDma instead of MchanDma + ArgumentStructGeneration(), + MemoryManagementGeneration("L1"), + TilingVariableReplacement("L2"), + MemoryAwareFunctionCallClosure(writeback = False, generateStruct = True), + PULPL3Tiling("L3", "L2", l3DmaHack), + PULPProfileUntiled(), + ArgumentStructGeneration(), + L3MemoryAwareFunctionCallClosure(writeback = False), + MemoryManagementGeneration("L2"), + MemoryManagementGeneration("L3.*"), + MemoryManagementGeneration(), +]) + +# Simple transformer for non-tiling cases +GAP9SimpleTransformer = CodeTransformation([ + MemoryManagementGeneration("L2"), + MemoryManagementGeneration("L3.*"), + MemoryManagementGeneration(), +]) + +# Skip transformer (no DMA operations) +GAP9SkipTransformer = CodeTransformation( + [ArgumentStructGeneration(), + MemoryPassthroughGeneration("L.*"), + MemoryPassthroughGeneration(), + FutureGeneration()]) + + +# =============================================================================== +# GAP9-specific bindings using ClDma instead of MchanDma +# All bindings below use GAP9Transformer or GAP9ClusterTransformer +# =============================================================================== + +GAP9DMASliceBindings = [ + AutoFutureBinding( + SliceChecker([ + PointerClass(type), + PointerClass(uint8_t), + PointerClass(uint8_t), + PointerClass(uint8_t), + PointerClass(uint8_t) + ], [PULPDMAFuture(underlyingType = type)]), DMASliceTemplate.referenceTemplate, MemoryAwareForkTransformer) + for type in IntegerDataTypes +] + +GAP9SliceBindings = [ + NodeBinding( + SliceChecker([ + PointerClass(type), + PointerClass(uint8_t), + PointerClass(uint8_t), + PointerClass(uint8_t), + PointerClass(uint8_t) + ], [PointerClass(type)]), SliceTemplate.referenceTemplate, GAP9Transformer) for type in FloatDataTypes +] + +GAP9ReshapeBindings = [ + NodeBinding(ReshapeChecker([PointerClass(type), PointerClass(int64_t)], [PointerClass(type)]), + ReshapeTemplate.referenceTemplate, GAP9SkipTransformer) for type in IntegerDataTypes + FloatDataTypes +] + +GAP9RQAddBindings = [ + NodeBinding(RQAddChecker([PointerClass(_type), PointerClass(_type2)], [PointerClass(_type3)]), + RQAddTemplate.referenceTemplate, GAP9Transformer) + for _type in [int8_t, uint8_t] + for _type2 in [int8_t, uint8_t] + for _type3 in [int8_t, uint8_t] +] + +GAP9AddBindings = [ + NodeBinding(AddChecker([PointerClass(type1), PointerClass(type2)], [PointerClass(int32_t)]), + AddTemplate.referenceTemplate, GAP9Transformer) + for type1 in IntegerDataTypes + for type2 in IntegerDataTypes +] + [ + NodeBinding(AddChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatAddTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9RQSConv2DBindings = [ + NodeBinding( + PULPConvChecker([ + PointerClass(type1), + PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t), + PointerClass(int32_t) + ], [PointerClass(type2)]), ConvTemplate.PULPConv2D_8_Template, GAP9Transformer) + for type1, type2 in zip([int8_t, int8_t, uint8_t, uint8_t], [int8_t, uint8_t, int8_t, uint8_t]) +] + +GAP9RQSDWConv2DBindings = [ + NodeBinding( + PULPConvChecker([ + PointerClass(type1), + PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t), + PointerClass(int32_t) + ], [PointerClass(type2)]), ConvTemplate.PULPDWConv2D_8_Template, GAP9Transformer) + for type1, type2 in zip([int8_t, int8_t, uint8_t, uint8_t], [int8_t, uint8_t, int8_t, uint8_t]) +] + +GAP9RQSGEMM_8_Binding = [ + NodeBinding( + PULPLinearChecker([PointerClass(type1), + PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(type2)]), GEMMTemplate.PULPGEMM_8_Template, + GAP9Transformer) for type1, type2 in zip([int8_t, uint8_t, int8_t, uint8_t], [int8_t, uint8_t, uint8_t, int8_t]) +] + +GAP9FloatGEMMBindings = [ + NodeBinding( + GEMMChecker([PointerClass(float32_t), PointerClass(float32_t), + PointerClass(float32_t)], [PointerClass(float32_t)]), FloatGemmTemplate.referenceTemplate, + GAP9Transformer) +] + +GAP9FloatConv2DBindings = [ + NodeBinding( + ConvChecker([PointerClass(float32_t), PointerClass(float32_t), + PointerClass(float32_t)], [PointerClass(float32_t)]), FloatConvTemplate.reference2DIm2ColTemplate, + GAP9Transformer) +] + +GAP9FloatDWConv2DBindings = [ + NodeBinding( + ConvChecker( + [PointerClass(float_type), PointerClass(float_type), + PointerClass(float_type)], [PointerClass(float_type)]), FloatConvTemplate.referenceDW2DIm2ColTemplate, + GAP9Transformer) for float_type in FloatDataTypes +] + +GAP9RQSMatrixVecBindings = [ + NodeBinding( + PULPLinearChecker([PointerClass(type1), + PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(type2)]), MatrixVectorTemplate.referenceTemplate, + GAP9Transformer) for type1, type2 in zip([int8_t], [int8_t]) +] + +GAP9RQSTallGEMMBindings = [ + NodeBinding( + PULPLinearChecker([PointerClass(type1), + PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(type2)]), TallGEMMTemplate.referenceTemplate, + GAP9Transformer) for type1, type2 in zip([int8_t], [int8_t]) +] + +GAP9RQSGEMMBindings = GAP9RQSGEMM_8_Binding + +GAP9MaxPool2DBindings = [ + NodeBinding(PULPMaxPoolChecker([PointerClass(type)], [PointerClass(type)]), + MaxPool2DTemplate.PULPMaxPool2D_8_Template, GAP9Transformer) for type in [int8_t, uint8_t] +] + [ + NodeBinding(PULPMaxPoolChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatMaxPoolTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9Conv1DBinding = NodeBinding( + PULPConvChecker( + [PointerClass(int8_t), PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(int8_t)]), ConvTemplate.PULPConv1D_8_Template, GAP9Transformer) + +GAP9DWConv1DBinding = NodeBinding( + PULPConvChecker( + [PointerClass(int8_t), PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(int8_t)]), ConvTemplate.PULPDWConv1D_8_Template, GAP9Transformer) + +GAP9MatMulBindings = [ + NodeBinding(MatMulChecker([PointerClass(int8_t), PointerClass(int8_t)], [PointerClass(int32_t)]), + GEMMTemplate.PULPMM_8_Template, GAP9ClusterTransformer) +] + [ + NodeBinding(MatMulChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatMatMulTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9ReduceMeanBindings = [ + NodeBinding(ReduceMeanChecker([PointerClass(type)], [PointerClass(type)]), ReduceMeanTemplate.referenceTemplate, + GAP9ClusterTransformer) for type in IntegerDataTypes +] + [ + NodeBinding(ReduceMeanChecker([PointerClass(float_type), PointerClass(integer_type)], [PointerClass(float_type)]), + FloatReduceMeanTemplate.referenceTemplate, GAP9ClusterTransformer) + for integer_type in SignedIntegerDataTypes + for float_type in FloatDataTypes +] + +GAP9ReduceSumBindings = [ + NodeBinding(ReduceMeanChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatReduceSumTemplate.referenceTemplate, GAP9ClusterTransformer) +] + +GAP9UniformRQSBindings = [ + NodeBinding( + PULPRequantShiftChecker([PointerClass(type), PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(int8_t)]), + UniformRequantShiftTemplate.referenceTemplate, GAP9Transformer) for type in IntegerDataTypes +] + +GAP9RQSBindings = [ + NodeBinding( + PULPRequantShiftChecker([PointerClass(type), PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(int8_t)]), + RequantShiftTemplate.referenceTemplate, GAP9Transformer) for type in IntegerDataTypes +] + [ + NodeBinding( + PULPRequantShiftChecker([PointerClass(type), PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(uint8_t)]), + RequantShiftTemplate.referenceTemplate, GAP9Transformer) for type in IntegerDataTypes +] + +GAP9SoftmaxBindings = [ + NodeBinding(SoftmaxChecker([PointerClass(_type)], [PointerClass(uint8_t)]), iSoftmaxTemplate.referenceTemplate, + GAP9Transformer) for _type in [int8_t, uint8_t] +] + [ + NodeBinding(SoftmaxChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatSoftmaxTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9SoftmaxGradBindings = [ + NodeBinding(SoftmaxChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatSoftmaxTemplate.referenceGradientTemplate, GAP9Transformer) +] + +GAP9SoftmaxCrossEntropyLossBindings = [ + NodeBinding( + SoftmaxCrossEntropyLossChecker([PointerClass(float32_t), PointerClass(type)], [PointerClass(float32_t)]), + SoftmaxCrossEntropyLossTemplate.referenceTemplate, GAP9Transformer) for type in IntegerDataTypes +] + +GAP9SoftmaxCrossEntropyLossGradBindings = [ + NodeBinding( + SoftmaxCrossEntropyLossChecker([PointerClass(float32_t), PointerClass(type)], [PointerClass(float32_t)]), + SoftmaxCrossEntropyLossTemplate.referenceGradientTemplate, GAP9Transformer) for type in IntegerDataTypes +] + +GAP9SGDBindings = [ + NodeBinding(SGDChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + SGDTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9TransposeBindings = [ + NodeBinding(TransposeChecker([PointerClass(type)], [PointerClass(type)]), TransposeTemplate.referenceTemplate, + GAP9Transformer) for type in IntegerDataTypes +] + [ + NodeBinding(TransposeChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), + TransposeTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9ConcatBindings = [ + NodeBinding(ConcatChecker([PointerClass(type), PointerClass(type)], [PointerClass(type)]), + ConcatTemplate.referenceTemplate, GAP9ClusterTransformer) for type in IntegerDataTypes +] + +GAP9iRMSNormBindings = [ + NodeBinding(LayerNormChecker([PointerClass(int8_t), PointerClass(int32_t)], [PointerClass(int8_t)]), + iRMSNormTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9iHardswishBindings = [ + NodeBinding(HardswishChecker([PointerClass(int8_t)], [PointerClass(int32_t)]), iHardswishTemplate.referenceTemplate, + GAP9ClusterTransformer) +] + +GAP9RQSiHardswishBindings = [ + NodeBinding( + RQHardswishChecker([PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(int8_t)]), RQSiHardswishTemplate.referenceTemplate, + GAP9Transformer) +] + +GAP9iRQSGELUBindings = [ + NodeBinding( + GELUChecker([PointerClass(int8_t), + PointerClass(int32_t), + PointerClass(int32_t), + PointerClass(int32_t)], [PointerClass(int8_t)]), RQSiGELUTemplate.referenceTemplate, + GAP9ClusterTransformer) +] + +GAP9MulBindings = [ + NodeBinding(MulChecker([PointerClass(typeA), PointerClass(typeB)], [PointerClass(int32_t)]), + MulTemplate.referenceTemplate, GAP9Transformer) + for typeA, typeB in itertools.product(SignedIntegerDataTypes, SignedIntegerDataTypes) +] + [ + NodeBinding(MulChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatMulTemplate.referenceTemplate, GAP9Transformer) +] + +GAP9ReluBinding = NodeBinding(ReluChecker([PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatReluTemplate.referenceTemplate, GAP9Transformer) + +GAP9LayernormBinding = NodeBinding( + LayerNormChecker( + [PointerClass(float32_t), PointerClass(float32_t), + PointerClass(float32_t)], [PointerClass(float32_t)]), FloatLayernormTemplate.referenceTemplate, + GAP9Transformer) + +GAP9FloatGELUBinding = NodeBinding( + GELUChecker([PointerClass(float32_t), PointerClass(float32_t)], [PointerClass(float32_t)]), + FloatGELUTemplate.referenceTemplate, GAP9Transformer) + +GAP9GatherBindings = [ + NodeBinding(GatherChecker([PointerClass(float32_t), PointerClass(type)], [PointerClass(float32_t)]), + GatherTemplate.referenceTemplate, GAP9Transformer) for type in IntegerDataTypes +] + +GAP9QuantBindings = [ + NodeBinding(QuantChecker([PointerClass(float32_t)], [PointerClass(int8_t)]), QuantTemplate.referenceTemplate, + GAP9Transformer), +] + +GAP9DequantBindings = [ + NodeBinding(DequantChecker([PointerClass(int8_t)], [PointerClass(float32_t)]), DequantTemplate.referenceTemplate, + GAP9Transformer), +] + [ + NodeBinding(DequantChecker([PointerClass(int32_t)], [PointerClass(float32_t)]), DequantTemplate.referenceTemplate, + GAP9Transformer), +] diff --git a/Deeploy/Targets/GAP9/DMA/ClDma.py b/Deeploy/Targets/GAP9/DMA/ClDma.py new file mode 100644 index 0000000000..b96796affa --- /dev/null +++ b/Deeploy/Targets/GAP9/DMA/ClDma.py @@ -0,0 +1,85 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +import math +from typing import Dict, Tuple + +from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation, VariableBuffer +from Deeploy.TilingExtension.AsyncDma import AsyncDma, PerTensorWaitingStrategy, DmaDirection, Future + + +class ClDmaFuture(Future): + """ + Future implementation for GAP9's cl_dma.h API. + Uses pi_cl_dma_cmd_t structure to track DMA transfers. + """ + + _initTemplate = NodeTemplate("pi_cl_dma_cmd_t ${name};") + + _deinitTemplate = NodeTemplate("") + + _allocTemplate = NodeTemplate("") # SDK handles allocation automatically + + _waitTemplate = NodeTemplate("pi_cl_dma_cmd_wait(&${name});") + + +class ClDma(AsyncDma): + """ + GAP9 Cluster DMA implementation using cl_dma.h high-level API. + + This uses the PMSIS standard API (pi_cl_dma_cmd) instead of low-level MCHAN. + Benefits: + - Higher abstraction level + - Better portability + - Automatic resource management + - Cleaner API + """ + + _transferTemplates = { + 1: NodeTemplate("pi_cl_dma_cmd(${ext}, ${loc}, ${size}, ${dir}, &${future});"), + 2: NodeTemplate("pi_cl_dma_cmd_2d(${ext}, ${loc}, ${size}, ${stride}, ${length}, ${dir}, &${future});"), + } + _waitingStrategy = PerTensorWaitingStrategy(ClDmaFuture) + + def __init__(self, transferTemplates: Dict[int, NodeTemplate] = _transferTemplates) -> None: + super().__init__(transferTemplates) + + def checkTransfer(self, ctxt: NetworkContext, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, + shape: Tuple[int, ...], strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], + direction: DmaDirection) -> None: + super().checkTransfer(ctxt, externalBuffer, localBuffer, shape, strideExt, strideLoc, direction) + + transferRank = len(shape) + # GAP9 cl_dma requires contiguous transfers for innermost dimension + assert strideExt[ + -1] == 1, "GAP9 cl_dma supports only contiguous transfers of the innermost dimension for external memory" + if transferRank == 1: + assert strideLoc[0] == 1, "GAP9 cl_dma supports only contiguous transfers for local memory" + else: + assert strideLoc[0] == shape[1] and strideLoc[ + 1] == 1, "GAP9 cl_dma supports only contiguous transfers for local memory" + + def transferOpRepr(self, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, shape: Tuple[int, ...], + strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], direction: DmaDirection, + future: Future) -> OperatorRepresentation: + operatorRepresentation = super().transferOpRepr(externalBuffer, localBuffer, shape, strideExt, strideLoc, + direction, future) + + transferRank = len(shape) + + # Use cl_dma API direction enum: PI_CL_DMA_DIR_EXT2LOC (1) or PI_CL_DMA_DIR_LOC2EXT (0) + operatorRepresentation["dir"] = "PI_CL_DMA_DIR_EXT2LOC" if direction == "ExternalToLocal" else "PI_CL_DMA_DIR_LOC2EXT" + + # Total transfer size in bytes (shape already contains byte counts from the framework) + transferSize = math.prod(shape) + operatorRepresentation["size"] = transferSize + + # For 2D transfers, add stride and length parameters (already in bytes) + if transferRank == 2: + # stride: bytes to add to go to next line (row stride in external memory) + operatorRepresentation["stride"] = strideExt[0] + # length: bytes per line (number of bytes after which DMA switches to next line) + operatorRepresentation["length"] = shape[1] + + return operatorRepresentation diff --git a/Deeploy/Targets/GAP9/DMA/__init__.py b/Deeploy/Targets/GAP9/DMA/__init__.py new file mode 100644 index 0000000000..4694b67df5 --- /dev/null +++ b/Deeploy/Targets/GAP9/DMA/__init__.py @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/Deeploy/Targets/GAP9/Deployer.py b/Deeploy/Targets/GAP9/Deployer.py new file mode 100644 index 0000000000..49bd885e5a --- /dev/null +++ b/Deeploy/Targets/GAP9/Deployer.py @@ -0,0 +1,58 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +""" +GAP9-specific deployer that uses cl_dma.h API. + +This deployer extends PULPDeployer to use GAP9-specific DMA (ClDma) via +the GAP9Bindings transformers. +""" + +from typing import Callable, Dict, List, Type + +import numpy as np +import onnx_graphsurgeon as gs + +from Deeploy.AbstractDataTypes import Pointer +from Deeploy.DeeployTypes import DeploymentPlatform, TopologyOptimizer +from Deeploy.Targets.PULPOpen.Deployer import PULPDeployer +from Deeploy.Targets.GAP9.Bindings import GAP9Transformer, GAP9ClusterTransformer, GAP9SimpleTransformer + + +class GAP9Deployer(PULPDeployer): + """ + GAP9-specific deployer using cl_dma.h API. + + This deployer uses GAP9-specific transformers that employ ClDma (cl_dma.h) + instead of the low-level MCHAN API used by PULPDeployer. + + The key difference is in the DMA implementation: + - PULP: Uses MchanDma (low-level MCHAN hardware API) + - GAP9: Uses ClDma (PMSIS cl_dma.h high-level API) + """ + + def __init__(self, + graph: gs.Graph, + deploymentPlatform: DeploymentPlatform, + inputTypes: Dict[str, Type[Pointer]], + loweringOptimizer: TopologyOptimizer, + scheduler: Callable = lambda x: x, + name: str = 'DeeployNetwork', + default_channels_first = False, + deeployStateDir: str = "DeeployStateDir", + inputOffsets = {}): + super().__init__(graph, + deploymentPlatform, + inputTypes, + loweringOptimizer, + scheduler, + name, + default_channels_first = default_channels_first, + deeployStateDir = deeployStateDir, + inputOffsets = inputOffsets) + + # Override transformers to use GAP9-specific ones with ClDma + self.Transformer = GAP9Transformer + self.ClusterTransformer = GAP9ClusterTransformer + self.SimpleTransformer = GAP9SimpleTransformer diff --git a/Deeploy/Targets/GAP9/Platform.py b/Deeploy/Targets/GAP9/Platform.py index 346f631e8a..697b8010ba 100644 --- a/Deeploy/Targets/GAP9/Platform.py +++ b/Deeploy/Targets/GAP9/Platform.py @@ -5,13 +5,158 @@ import numpy as np import onnx_graphsurgeon as gs -from Deeploy.DeeployTypes import ConstantBuffer, DeploymentEngine, DeploymentPlatform, NetworkContext, NodeTemplate, \ - StructBuffer, TransientBuffer, VariableBuffer +from Deeploy.DeeployTypes import ConstantBuffer, DeploymentEngine, DeploymentPlatform, NetworkContext, NodeMapper, \ + NodeTemplate, StructBuffer, TransientBuffer, VariableBuffer from Deeploy.MemoryLevelExtension.MemoryLevels import MemoryHierarchy, MemoryLevel from Deeploy.MemoryLevelExtension.NetworkDeployers.MemoryLevelDeployer import MemoryPlatform, MemoryPlatformWrapper from Deeploy.Targets.GAP9.Templates import AllocateTemplate, FreeTemplate from Deeploy.Targets.Generic.Templates import AllocateTemplate as BasicAllocateTemplate -from Deeploy.Targets.PULPOpen.Platform import PULPMapping +from Deeploy.Targets.Generic.Bindings import BasicGEMMBindings, BasicPad1DBindings, BasicPad2DBindings, \ + BasicRQIntegerDivBinding +from Deeploy.Targets.Generic.Layers import AddLayer, ConcatLayer, ConvLayer, GatherLayer, GELULayer, GEMMLayer, \ + LayerNormLayer, MatMulLayer, MaxPoolLayer, MulLayer, PadLayer, QuantLayer, ReduceMeanLayer, ReduceSumLayer, \ + ReluLayer, RequantShiftLayer, ReshapeLayer, RQIntegerDivLayer, RQSiGELULayer, RQSiHardswishLayer, SGDLayer, \ + SliceLayer, SoftmaxCrossEntropyLossGradLayer, SoftmaxCrossEntropyLossLayer, SoftmaxGradLayer, SoftmaxLayer, \ + TransposeLayer, iHardswishLayer, iRMSNormLayer +from Deeploy.Targets.Generic.Parsers import AddParser, ConcatParser, DequantParser, FlattenParser, GatherParser, \ + GELUParser, GEMMParser, LayerNormParser, MatMulParser, MaxPool2DParser, MulParser, Pad1DParser, Pad2DParser, \ + QuantParser, ReduceMeanParser, ReduceSumParser, ReluParser, RequantShiftParser, ReshapeParser, RQAddParser, \ + RQIntegerDivParser, RQSiGELUParser, RQSiHardswishParser, SGDParser, SliceParser, \ + SoftmaxCrossEntropyLossGradParser, SoftmaxCrossEntropyLossParser, SoftmaxGradParser, SoftmaxParser, \ + TransposeParser, UniformRequantShiftParser, UnsqueezeParser, iHardswishParser, iRMSNormParser, iSoftmaxParser +from Deeploy.Targets.PULPOpen.Bindings import BasicDequantBindings, BasicQuantBindings, PULPConv1DBinding, \ + PULPDMASliceBindings, PULPDWConv1DBinding, PULPFloatDWConv2DBindings, PULPReduceMeanBindings, PULPSliceBindings +from Deeploy.Targets.PULPOpen.Layers import PULPRQSConvLayer, PULPRQSGEMMLayer +from Deeploy.Targets.PULPOpen.Parsers import PULPConv1DParser, PULPConv2DParser, PULPDWConv1DParser, \ + PULPDWConv2DParser, PULPFPConv2DParser, PULPFPDWConv2DParser, PULPGEMMParser, PULPMatrixVecParser, \ + PULPTallGEMMParser + +# Import GAP9-specific tiler bindings +from Deeploy.Targets.GAP9.Tiler import ( + GAP9AddTilingReadyBindings, + GAP9ConcatTilingReadyBindings, + GAP9Conv2DTilingReadyBindings, + GAP9FlattenTilingReadyBindings, + GAP9FPGELUTilingReadyBindings, + GAP9FPGEMMTilingReadyBindings, + GAP9GatherTilingReadyBindings, + GAP9iHardswishTilingReadyBindings, + GAP9iRMSNormTilingReadyBindings, + GAP9iRQSGELUTilingReadyBindings, + GAP9LayernormTilingReadyBindings, + GAP9MatMulTilingReadyBindings, + GAP9MaxPool2DTilingReadyBindings, + GAP9MulTilingReadyBindings, + GAP9ReduceSumTilingReadyBindings, + GAP9ReluTilingReadyBindings, + GAP9RQAddTilingReadyBindings, + GAP9RQSConv2DTilingReadyBindings, + GAP9RQSDWConv2DTilingReadyBindings, + GAP9RQSGEMMTilingReadyBindings, + GAP9RQSiHardswishTilingReadyBindings, + GAP9RQSMatrixVecTilingReadyBindings, + GAP9RQSTallGEMMTilingReadyBindings, + GAP9RQSTilingReadyBindings, + GAP9SGDTilingReadyBindings, + GAP9SoftmaxCrossEntropyGradTilingReadyBindings, + GAP9SoftmaxCrossEntropyTilingReadyBindings, + GAP9SoftmaxGradTilingReadyBindings, + GAP9SoftmaxTilingReadyBindings, + GAP9TransposeTilingReadyBindings, + GAP9UniformRQSTilingReadyBindings, +) + +# Create GAP9-specific NodeMappers +GAP9_RQAddMapper = NodeMapper(RQAddParser(), GAP9RQAddTilingReadyBindings) +GAP9_AddMapper = NodeMapper(AddParser(), GAP9AddTilingReadyBindings) +GAP9_FlattenMapper = NodeMapper(FlattenParser(), GAP9FlattenTilingReadyBindings) +GAP9_GELUMapper = NodeMapper(GELUParser(), GAP9FPGELUTilingReadyBindings) +GAP9_GatherMapper = NodeMapper(GatherParser(), GAP9GatherTilingReadyBindings) +GAP9_MulMapper = NodeMapper(MulParser(), GAP9MulTilingReadyBindings) +GAP9_Pad1DMapper = NodeMapper(Pad1DParser(), BasicPad1DBindings) +GAP9_Pad2DMapper = NodeMapper(Pad2DParser(), BasicPad2DBindings) +GAP9_ReshapeMapper = NodeMapper(ReshapeParser(), GAP9FlattenTilingReadyBindings) +GAP9_TransposeMapper = NodeMapper(TransposeParser(), GAP9TransposeTilingReadyBindings) +GAP9_UnsqueezeMapper = NodeMapper(UnsqueezeParser(), GAP9FlattenTilingReadyBindings) +GAP9_RequantShiftMapper = NodeMapper(RequantShiftParser(), GAP9RQSTilingReadyBindings) +GAP9_UniformRequantShiftMapper = NodeMapper(UniformRequantShiftParser(), GAP9UniformRQSTilingReadyBindings) +GAP9_ReduceMeanMapper = NodeMapper(ReduceMeanParser(), PULPReduceMeanBindings) +GAP9_ReduceSumMapper = NodeMapper(ReduceSumParser(), GAP9ReduceSumTilingReadyBindings) +GAP9_MatMulMapper = NodeMapper(MatMulParser(), GAP9MatMulTilingReadyBindings) +GAP9_RQIntegerDivMapper = NodeMapper(RQIntegerDivParser(), [BasicRQIntegerDivBinding]) +GAP9_RQGELU_int8_Mapper = NodeMapper(RQSiGELUParser(), GAP9iRQSGELUTilingReadyBindings) +GAP9_Conv1DMapper = NodeMapper(PULPConv1DParser(), [PULPConv1DBinding]) +GAP9_DWConv1DMapper = NodeMapper(PULPDWConv1DParser(), [PULPDWConv1DBinding]) +GAP9_FPConv2DMapper = NodeMapper(PULPFPConv2DParser(), GAP9Conv2DTilingReadyBindings) +GAP9_Conv2DMapper = NodeMapper(PULPConv2DParser(), GAP9RQSConv2DTilingReadyBindings) +GAP9_FPDWConv2DMapper = NodeMapper(PULPFPDWConv2DParser(), PULPFloatDWConv2DBindings) +GAP9_DWConv2DMapper = NodeMapper(PULPDWConv2DParser(), GAP9RQSDWConv2DTilingReadyBindings) +GAP9_GEMMMapper = NodeMapper(PULPGEMMParser(), GAP9RQSGEMMTilingReadyBindings) +GAP9_FloatGEMMMapper = NodeMapper(GEMMParser(), GAP9FPGEMMTilingReadyBindings) +GAP9_MatrixVecMapper = NodeMapper(PULPMatrixVecParser(), GAP9RQSMatrixVecTilingReadyBindings) +GAP9_TallGEMMMapper = NodeMapper(PULPTallGEMMParser(), GAP9RQSTallGEMMTilingReadyBindings) +GAP9_MaxPool2DMapper = NodeMapper(MaxPool2DParser(), GAP9MaxPool2DTilingReadyBindings) +GAP9_LayerNormMapper = NodeMapper(LayerNormParser(), GAP9LayernormTilingReadyBindings) +GAP9_ReluMapper = NodeMapper(ReluParser(), GAP9ReluTilingReadyBindings) +GAP9_SoftmaxMapper = NodeMapper(SoftmaxParser(), GAP9SoftmaxTilingReadyBindings) +GAP9_SoftmaxGradMapper = NodeMapper(SoftmaxGradParser(), GAP9SoftmaxGradTilingReadyBindings) +GAP9_Softmax_int8_Mapper = NodeMapper(iSoftmaxParser(), GAP9SoftmaxTilingReadyBindings) +GAP9_ConcatMapper = NodeMapper(ConcatParser(), GAP9ConcatTilingReadyBindings) +GAP9_DMASliceMapper = NodeMapper(SliceParser(), PULPDMASliceBindings) +GAP9_SliceMapper = NodeMapper(SliceParser(), PULPSliceBindings) +GAP9_iRMSNormMapper = NodeMapper(iRMSNormParser(), GAP9iRMSNormTilingReadyBindings) +GAP9_iHardswishMapper = NodeMapper(iHardswishParser(), GAP9iHardswishTilingReadyBindings) +GAP9_RQSiHardswishMapper = NodeMapper(RQSiHardswishParser(), GAP9RQSiHardswishTilingReadyBindings) +GAP9_SoftmaxCrossEntropyLossMapper = NodeMapper(SoftmaxCrossEntropyLossParser(), + GAP9SoftmaxCrossEntropyTilingReadyBindings) +GAP9_SoftmaxCrossEntropyLossGradMapper = NodeMapper(SoftmaxCrossEntropyLossGradParser(), + GAP9SoftmaxCrossEntropyGradTilingReadyBindings) +GAP9_SGDMapper = NodeMapper(SGDParser(), GAP9SGDTilingReadyBindings) +GAP9_QuantMapper = NodeMapper(QuantParser(), BasicQuantBindings) +GAP9_DequantMapper = NodeMapper(DequantParser(), BasicDequantBindings) +GAP9_GEMMDequantMapper = NodeMapper(PULPGEMMParser(), BasicGEMMBindings) + +# GAP9-specific mapping using ClDma +GAP9Mapping = { + 'Conv': ConvLayer([GAP9_FPConv2DMapper, GAP9_FPDWConv2DMapper]), + 'RequantizedConv': PULPRQSConvLayer([GAP9_Conv2DMapper, GAP9_DWConv2DMapper, GAP9_Conv1DMapper, GAP9_DWConv1DMapper]), + 'RequantizedGemm': PULPRQSGEMMLayer([GAP9_MatrixVecMapper, GAP9_TallGEMMMapper, GAP9_GEMMMapper]), + 'Gemm': GEMMLayer([GAP9_FloatGEMMMapper, GAP9_GEMMDequantMapper]), + 'Gelu': GELULayer([GAP9_GELUMapper]), + 'LayerNormalization': LayerNormLayer([GAP9_LayerNormMapper]), + 'MaxPool': MaxPoolLayer([GAP9_MaxPool2DMapper]), + 'RequantizediGELU': RQSiGELULayer([GAP9_RQGELU_int8_Mapper]), + 'RQIntegerDiv': RQIntegerDivLayer([GAP9_RQIntegerDivMapper]), + 'MatMul': MatMulLayer([GAP9_MatMulMapper]), + 'IntegerMean': ReduceMeanLayer([GAP9_ReduceMeanMapper]), + 'iSoftmax': SoftmaxLayer([GAP9_Softmax_int8_Mapper]), + 'Softmax': SoftmaxLayer([GAP9_SoftmaxMapper]), + 'ReduceMean': ReduceMeanLayer([GAP9_ReduceMeanMapper]), + 'ReduceSum': ReduceSumLayer([GAP9_ReduceSumMapper]), + 'RequantShift': RequantShiftLayer([GAP9_UniformRequantShiftMapper, GAP9_RequantShiftMapper]), + 'Add': AddLayer([GAP9_AddMapper]), + 'Flatten': ReshapeLayer([GAP9_FlattenMapper]), + 'Gather': GatherLayer([GAP9_GatherMapper]), + 'Mul': MulLayer([GAP9_MulMapper]), + 'Pad': PadLayer([GAP9_Pad1DMapper, GAP9_Pad2DMapper]), + 'Relu': ReluLayer([GAP9_ReluMapper]), + 'Reshape': ReshapeLayer([GAP9_ReshapeMapper]), + 'Squeeze': ReshapeLayer([GAP9_UnsqueezeMapper]), + 'Transpose': TransposeLayer([GAP9_TransposeMapper]), + 'Unsqueeze': ReshapeLayer([GAP9_UnsqueezeMapper]), + 'Slice': SliceLayer([GAP9_SliceMapper, GAP9_DMASliceMapper]), + 'RequantizedAdd': AddLayer([GAP9_RQAddMapper]), + 'Concat': ConcatLayer([GAP9_ConcatMapper]), + 'iRMSNorm': iRMSNormLayer([GAP9_iRMSNormMapper]), + 'iHardswish': iHardswishLayer([GAP9_iHardswishMapper]), + 'RequantizediHardswish': RQSiHardswishLayer([GAP9_RQSiHardswishMapper]), + 'Quant': QuantLayer([GAP9_QuantMapper]), + 'Dequant': QuantLayer([GAP9_DequantMapper]), + 'SoftmaxGrad': SoftmaxGradLayer([GAP9_SoftmaxGradMapper]), + 'SoftmaxCrossEntropyLoss': SoftmaxCrossEntropyLossLayer([GAP9_SoftmaxCrossEntropyLossMapper]), + 'SoftmaxCrossEntropyLossGrad': SoftmaxCrossEntropyLossGradLayer([GAP9_SoftmaxCrossEntropyLossGradMapper]), + 'SGD': SGDLayer([GAP9_SGDMapper]) +} class GAP9VariableBuffer(VariableBuffer): @@ -93,7 +238,7 @@ class GAP9StructBuffer(StructBuffer): class GAP9ClusterEngine(DeploymentEngine): - def __init__(self, name: str, Mapping = PULPMapping, initCode = "", includeList = _includeList, n_cores: int = 8) -> None: + def __init__(self, name: str, Mapping = GAP9Mapping, initCode = "", includeList = _includeList, n_cores: int = 8) -> None: super().__init__(name, Mapping, initCode, includeList) self.n_cores = n_cores diff --git a/Deeploy/Targets/GAP9/Tiler.py b/Deeploy/Targets/GAP9/Tiler.py new file mode 100644 index 0000000000..73d3958ae9 --- /dev/null +++ b/Deeploy/Targets/GAP9/Tiler.py @@ -0,0 +1,166 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +""" +GAP9-specific tiler bindings using ClDma instead of MchanDma. + +This module creates GAP9-specific tiling ready bindings that use ClDma +instead of the low-level MCHAN API. +""" + +import copy + +from Deeploy.Targets.Generic.TileConstraints.AddTileConstraint import AddTileConstraint +from Deeploy.Targets.Generic.TileConstraints.ConcatTileConstraint import ConcatTileConstraint +from Deeploy.Targets.Generic.TileConstraints.iHardswishTileConstraint import iHardswishTileConstraint +from Deeploy.Targets.Generic.TileConstraints.iRMSNormTileConstraint import iRMSNormTileConstraint +from Deeploy.Targets.Generic.TileConstraints.MulTileConstraint import MulTileConstraint +from Deeploy.Targets.Generic.TileConstraints.NOPTileConstraint import NOPTileConstraint +from Deeploy.Targets.Generic.TileConstraints.RQSiGELUTileConstraint import RQSiGELUTileConstraint +from Deeploy.Targets.Generic.TileConstraints.RQSiHardswishTileConstraint import RQSiHardswishTileConstraint +from Deeploy.Targets.Generic.TileConstraints.TransposeTileConstraint import TransposeTileConstraint +from Deeploy.Targets.Generic.TileConstraints.UnaryTileConstraint import UnaryTileConstraint +from Deeploy.Targets.Generic.TileConstraints.UntiledTileConstraint import UntiledTileConstraint +from Deeploy.Targets.GAP9.Bindings import ( + GAP9AddBindings, + GAP9ConcatBindings, + GAP9FloatConv2DBindings, + GAP9FloatGELUBinding, + GAP9FloatGEMMBindings, + GAP9GatherBindings, + GAP9iHardswishBindings, + GAP9iRMSNormBindings, + GAP9iRQSGELUBindings, + GAP9LayernormBinding, + GAP9MatMulBindings, + GAP9MaxPool2DBindings, + GAP9MulBindings, + GAP9ReduceSumBindings, + GAP9ReluBinding, + GAP9ReshapeBindings, + GAP9RQAddBindings, + GAP9RQSBindings, + GAP9RQSConv2DBindings, + GAP9RQSDWConv2DBindings, + GAP9RQSGEMMBindings, + GAP9RQSiHardswishBindings, + GAP9RQSMatrixVecBindings, + GAP9RQSTallGEMMBindings, + GAP9SGDBindings, + GAP9SoftmaxBindings, + GAP9SoftmaxCrossEntropyLossBindings, + GAP9SoftmaxCrossEntropyLossGradBindings, + GAP9SoftmaxGradBindings, + GAP9TransposeBindings, + GAP9UniformRQSBindings, +) +from Deeploy.Targets.PULPOpen.TileConstraints.ConvTileConstraint import Conv2DTileConstraint, RQConv2DTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.DWConvTileConstraint import DWConv2DTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.GatherTileConstraint import GatherTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.GEMMTileConstraint import FloatGEMMTileConstraint, GEMMTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.iSoftmaxTileConstraint import iSoftmaxTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.LayernormTileConstraint import LayernormTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.MatMulTileConstraint import MatMulTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.MaxPoolTileConstraint import MaxPoolCTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.RequantShiftTileConstraint import RequantShiftTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.SGDTileConstraint import SGDTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.SoftmaxCrossEntropyTileConstraint import \ + SoftmaxCrossEntropyGradTileConstraint, SoftmaxCrossEntropyTileConstraint +from Deeploy.TilingExtension.TilerExtension import TilingReadyNodeBindings + +# GAP9-specific tiling ready bindings using ClDma +GAP9RQSConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSConv2DBindings, + tileConstraint = RQConv2DTileConstraint()) + +GAP9RQSDWConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSDWConv2DBindings, + tileConstraint = DWConv2DTileConstraint()) + +GAP9Conv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9FloatConv2DBindings, + tileConstraint = Conv2DTileConstraint()) + +GAP9RQSGEMMTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSGEMMBindings, + tileConstraint = GEMMTileConstraint()) + +GAP9FPGEMMTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9FloatGEMMBindings, + tileConstraint = FloatGEMMTileConstraint()) + +GAP9RQSMatrixVecTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSMatrixVecBindings, + tileConstraint = GEMMTileConstraint()) + +GAP9RQSTallGEMMTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSTallGEMMBindings, + tileConstraint = GEMMTileConstraint()) + +GAP9MatMulTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9MatMulBindings, + tileConstraint = MatMulTileConstraint()) + +GAP9RQAddTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQAddBindings, + tileConstraint = AddTileConstraint()) + +GAP9iHardswishTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9iHardswishBindings, + tileConstraint = iHardswishTileConstraint()) + +GAP9RQSiHardswishTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSiHardswishBindings, + tileConstraint = RQSiHardswishTileConstraint()) + +_GAP9FlattenBindings = copy.deepcopy(GAP9ReshapeBindings) + +GAP9FlattenTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = _GAP9FlattenBindings, + tileConstraint = NOPTileConstraint()) + +GAP9MaxPool2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9MaxPool2DBindings, + tileConstraint = MaxPoolCTileConstraint()) + +GAP9RQSTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSBindings, + tileConstraint = RequantShiftTileConstraint()) + +GAP9UniformRQSTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9UniformRQSBindings, + tileConstraint = UnaryTileConstraint()) + +GAP9TransposeTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9TransposeBindings, + tileConstraint = TransposeTileConstraint()) + +GAP9AddTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9AddBindings, + tileConstraint = AddTileConstraint()) + +GAP9SoftmaxTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9SoftmaxBindings, + tileConstraint = iSoftmaxTileConstraint()) + +GAP9ConcatTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9ConcatBindings, + tileConstraint = ConcatTileConstraint()) + +GAP9iRMSNormTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9iRMSNormBindings, + tileConstraint = iRMSNormTileConstraint()) + +GAP9iRQSGELUTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9iRQSGELUBindings, + tileConstraint = RQSiGELUTileConstraint()) + +GAP9MulTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9MulBindings, + tileConstraint = MulTileConstraint()) + +GAP9ReluTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = [GAP9ReluBinding], + tileConstraint = UnaryTileConstraint()) + +GAP9LayernormTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = [GAP9LayernormBinding], + tileConstraint = LayernormTileConstraint()) + +GAP9FPGELUTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = [GAP9FloatGELUBinding], + tileConstraint = UnaryTileConstraint()) + +GAP9GatherTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9GatherBindings, + tileConstraint = GatherTileConstraint()) + +GAP9SoftmaxCrossEntropyTilingReadyBindings = TilingReadyNodeBindings( + nodeBindings = GAP9SoftmaxCrossEntropyLossBindings, tileConstraint = SoftmaxCrossEntropyTileConstraint()) + +GAP9SoftmaxCrossEntropyGradTilingReadyBindings = TilingReadyNodeBindings( + nodeBindings = GAP9SoftmaxCrossEntropyLossGradBindings, tileConstraint = SoftmaxCrossEntropyGradTileConstraint()) + +GAP9SoftmaxGradTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9SoftmaxGradBindings, + tileConstraint = UntiledTileConstraint()) + +GAP9ReduceSumTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9ReduceSumBindings, + tileConstraint = UntiledTileConstraint()) + +GAP9SGDTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9SGDBindings, + tileConstraint = SGDTileConstraint()) diff --git a/DeeployTest/testUtils/platformMapping.py b/DeeployTest/testUtils/platformMapping.py index f107ab2e93..9d526906f9 100644 --- a/DeeployTest/testUtils/platformMapping.py +++ b/DeeployTest/testUtils/platformMapping.py @@ -14,6 +14,7 @@ from Deeploy.Targets.Chimera.Platform import ChimeraOptimizer, ChimeraPlatform from Deeploy.Targets.CortexM.Deployer import CMSISDeployer from Deeploy.Targets.CortexM.Platform import CMSISOptimizer, CMSISPlatform +from Deeploy.Targets.GAP9.Deployer import GAP9Deployer from Deeploy.Targets.GAP9.Platform import GAP9Platform, MemoryGAP9Platform, MemoryGAP9PlatformWrapper from Deeploy.Targets.Generic.Deployer import GenericDeployer from Deeploy.Targets.Generic.Platform import GenericOptimizer, GenericPlatform @@ -206,8 +207,24 @@ def mapDeployer(platform: DeploymentPlatform, default_channels_first = default_channels_first, deeployStateDir = deeployStateDir) - elif isinstance(platform, (PULPPlatform, MemoryPULPPlatform, MemoryPULPPlatformWrapper, GAP9Platform, - MemoryGAP9Platform, MemoryGAP9PlatformWrapper)): + elif isinstance(platform, (GAP9Platform, MemoryGAP9Platform, MemoryGAP9PlatformWrapper)): + + if loweringOptimizer is None: + loweringOptimizer = PULPOptimizer + + if default_channels_first is None: + default_channels_first = False + + deployer = GAP9Deployer(graph, + platform, + inputTypes, + loweringOptimizer, + scheduler, + name = name, + default_channels_first = default_channels_first, + deeployStateDir = deeployStateDir) + + elif isinstance(platform, (PULPPlatform, MemoryPULPPlatform, MemoryPULPPlatformWrapper)): if loweringOptimizer is None: loweringOptimizer = PULPOptimizer From b51e29d94604c0c703203d6fae8ccfdd59465dd2 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 21 Nov 2025 02:26:01 +0000 Subject: [PATCH 12/23] [GAP0] WIP Tiling Support for L3 --- CMakeLists.txt | 2 +- Deeploy/Targets/GAP9/Bindings.py | 6 +- Deeploy/Targets/GAP9/DMA/L3Dma.py | 64 ++ Deeploy/Targets/GAP9/Deployer.py | 69 +- DeeployTest/CMakeLists.txt | 8 +- DeeployTest/Platforms/GAP9/sdk.config | 8 +- DeeployTest/Platforms/GAP9/src/deeploytest.c | 4 +- DeeployTest/output.txt | 869 +++++++++++++++++++ cmake/gap9/gap9_gvsoc.cmake | 120 +++ cmake/simulation.cmake | 8 + 10 files changed, 1143 insertions(+), 15 deletions(-) create mode 100644 Deeploy/Targets/GAP9/DMA/L3Dma.py create mode 100644 DeeployTest/output.txt create mode 100644 cmake/gap9/gap9_gvsoc.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index d19feef2c0..da4765b40e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -225,7 +225,7 @@ endif() if(platform STREQUAL GAP9) project(${TESTNAME} LANGUAGES C ASM) - + include(${CMAKE_CURRENT_LIST_DIR}/cmake/gap9/gap9_gvsoc.cmake) add_compile_options( -Wno-error=unknown-pragmas ) diff --git a/Deeploy/Targets/GAP9/Bindings.py b/Deeploy/Targets/GAP9/Bindings.py index 6bb2053024..68a4c9d60b 100644 --- a/Deeploy/Targets/GAP9/Bindings.py +++ b/Deeploy/Targets/GAP9/Bindings.py @@ -25,11 +25,11 @@ from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterTiling import PULPClusterTiling from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPL3Tiling import PULPL3Tiling from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPProfileUntiled import PULPProfileUntiled -from Deeploy.Targets.PULPOpen.DMA.L3Dma import l3DmaHack from Deeploy.Targets.PULPOpen.Bindings import TilingCallClosure, ForkClosure, \ MemoryAwareFunctionCallClosure, L3MemoryAwareFunctionCallClosure, MemoryAwareForkTransformer from Deeploy.Targets.PULPOpen.DataTypes import PULPDMAFuture from Deeploy.Targets.GAP9.DMA.ClDma import ClDma +from Deeploy.Targets.GAP9.DMA.L3Dma import gap9L3DmaHack # Import templates from PULPOpen and Generic from Deeploy.Targets.Generic.Templates import AddTemplate, ConcatTemplate, DequantTemplate, FloatReduceMeanTemplate, \ @@ -60,7 +60,7 @@ MemoryManagementGeneration("L1"), TilingVariableReplacement("L2"), MemoryAwareFunctionCallClosure(writeback = False, generateStruct = True), - PULPL3Tiling("L3", "L2", l3DmaHack), + PULPL3Tiling("L3", "L2", gap9L3DmaHack), # Use GAP9-specific L3 DMA PULPProfileUntiled(), ArgumentStructGeneration(), L3MemoryAwareFunctionCallClosure(writeback = False), @@ -79,7 +79,7 @@ MemoryManagementGeneration("L1"), TilingVariableReplacement("L2"), MemoryAwareFunctionCallClosure(writeback = False, generateStruct = True), - PULPL3Tiling("L3", "L2", l3DmaHack), + PULPL3Tiling("L3", "L2", gap9L3DmaHack), # Use GAP9-specific L3 DMA PULPProfileUntiled(), ArgumentStructGeneration(), L3MemoryAwareFunctionCallClosure(writeback = False), diff --git a/Deeploy/Targets/GAP9/DMA/L3Dma.py b/Deeploy/Targets/GAP9/DMA/L3Dma.py new file mode 100644 index 0000000000..adbf161328 --- /dev/null +++ b/Deeploy/Targets/GAP9/DMA/L3Dma.py @@ -0,0 +1,64 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +import math +from typing import Dict, Tuple + +from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation, VariableBuffer +from Deeploy.TilingExtension.AsyncDma import AsyncDma, BlockingDmaFromAsyncDmaAdapter, DmaDirection, Future, \ + PerTensorWaitingStrategy + + +class GAP9L3DmaFuture(Future): + + _initTemplate = NodeTemplate("pi_cl_ram_req_t ${name} = {0};") + + _deinitTemplate = NodeTemplate("") + + _allocTemplate = NodeTemplate("") + + _waitTemplate = NodeTemplate(""" + if (${name}.size != 0) { + pi_cl_ram_copy_wait(&${name}); + }""") + + +class GAP9L3Dma(AsyncDma): + + _transferTemplates = { + 2: + NodeTemplate( + "pi_cl_ram_copy_2d(get_ram_ptr(), ${ext}, ${loc}, ${transfer_size}, ${stride}, ${length}, ${ext2loc}, &${future});" + ) + } + _waitingStrategy = PerTensorWaitingStrategy(GAP9L3DmaFuture) + + def __init__(self, transferTemplates: Dict[int, NodeTemplate] = _transferTemplates) -> None: + super().__init__(transferTemplates) + + def checkTransfer(self, ctxt: NetworkContext, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, + shape: Tuple[int, ...], strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], + direction: DmaDirection) -> None: + super().checkTransfer(ctxt, externalBuffer, localBuffer, shape, strideExt, strideLoc, direction) + assert strideExt[-1] == 1, \ + "GAP9 RAM API requires contiguous transfers of the innermost dimension for external memory" + assert strideLoc[0] == shape[1] and strideLoc[1] == 1, \ + f"GAP9 RAM API requires contiguous transfers for local memory. Received local shape: {shape}, stride: {strideLoc}" + + def transferOpRepr(self, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, shape: Tuple[int, ...], + strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], direction: DmaDirection, + future: Future) -> OperatorRepresentation: + operatorRepresentation = super().transferOpRepr(externalBuffer, localBuffer, shape, strideExt, strideLoc, + direction, future) + operatorRepresentation.update({ + "ext2loc": 1 if direction == "ExternalToLocal" else 0, + "transfer_size": math.prod(shape), + "length": shape[1], + "stride": strideExt[0], + }) + return operatorRepresentation + + +# Blocking adapter for L3 DMA (used in GAP9 L3 tiling) +gap9L3DmaHack = BlockingDmaFromAsyncDmaAdapter(GAP9L3Dma()) diff --git a/Deeploy/Targets/GAP9/Deployer.py b/Deeploy/Targets/GAP9/Deployer.py index 49bd885e5a..529e80a694 100644 --- a/Deeploy/Targets/GAP9/Deployer.py +++ b/Deeploy/Targets/GAP9/Deployer.py @@ -15,10 +15,19 @@ import onnx_graphsurgeon as gs from Deeploy.AbstractDataTypes import Pointer -from Deeploy.DeeployTypes import DeploymentPlatform, TopologyOptimizer +from Deeploy.DeeployTypes import ConstantBuffer, DeploymentPlatform, NodeTemplate, TopologyOptimizer, VariableBuffer from Deeploy.Targets.PULPOpen.Deployer import PULPDeployer from Deeploy.Targets.GAP9.Bindings import GAP9Transformer, GAP9ClusterTransformer, GAP9SimpleTransformer +# GAP9-specific L3 RAM allocation and loading templates +_GAP9L3AllocTemplate = NodeTemplate(""" +${locPtr} = cl_ram_malloc(${size}); +""") + +_GAP9L3InitTemplate = NodeTemplate(""" +load_file_to_ram(${locPtr}, "${extName}.hex"); +""") + class GAP9Deployer(PULPDeployer): """ @@ -27,9 +36,10 @@ class GAP9Deployer(PULPDeployer): This deployer uses GAP9-specific transformers that employ ClDma (cl_dma.h) instead of the low-level MCHAN API used by PULPDeployer. - The key difference is in the DMA implementation: - - PULP: Uses MchanDma (low-level MCHAN hardware API) - - GAP9: Uses ClDma (PMSIS cl_dma.h high-level API) + The key differences from PULPDeployer: + - DMA: Uses ClDma (PMSIS cl_dma.h) instead of MchanDma (MCHAN hardware API) + - L3 RAM: Uses GAP9 APS256XXN OctaSPI RAM accessed via pi_cl_ram_* APIs + - File System: Uses ReadFS to load L3 data from flash """ def __init__(self, @@ -56,3 +66,54 @@ def __init__(self, self.Transformer = GAP9Transformer self.ClusterTransformer = GAP9ClusterTransformer self.SimpleTransformer = GAP9SimpleTransformer + + def generateBufferAllocationCode(self) -> str: + """ + Generate buffer allocation code with GAP9-specific L3 RAM support. + + For L3 buffers: + 1. Allocate space in APS256XXN OctaSPI RAM using cl_ram_malloc() + 2. Load data from ReadFS using load_file_to_ram() + 3. Assign extName to enable hex dump generation + """ + retStr = super().generateBufferAllocationCode() + + L3FileStr = "" + globalConstBuffers = [ + buf for key, buf in self.ctxt.globalObjects.items() + if isinstance(buf, VariableBuffer) and buf._deploy + ] + nonArenaBuffers = [buf for buf in globalConstBuffers if buf._users != []] + outputBuffNames = [outputBuffer.name for outputBuffer in self.graph.outputs] + + # Find all L3 constant buffers + l3ConstBuffer = [] + for buf in nonArenaBuffers: + if hasattr(buf, "_memoryLevel") and buf._memoryLevel == "L3" and buf.name not in outputBuffNames: + l3ConstBuffer.append(buf) + + # Generate allocation and loading code for each L3 buffer + for idx, buf in enumerate(l3ConstBuffer): + locPtr = str(buf._instance) + extName = str(idx) + buf.extName = extName # This enables hex dump generation + size = np.prod(buf.shape) * (buf._type.referencedType.typeWidth // 8) + + # Allocate L3 RAM space (for constant buffers only) + if isinstance(buf, ConstantBuffer): + L3FileStr += _GAP9L3AllocTemplate.generate({ + "locPtr": locPtr, + "extName": extName, + "size": size + }) + + # Load data from ReadFS + L3FileStr += _GAP9L3InitTemplate.generate({ + "locPtr": locPtr, + "extName": extName, + "size": size + }) + + retStr = retStr + L3FileStr + + return retStr diff --git a/DeeployTest/CMakeLists.txt b/DeeployTest/CMakeLists.txt index 4e7fe40fc8..0bdd94c9b3 100644 --- a/DeeployTest/CMakeLists.txt +++ b/DeeployTest/CMakeLists.txt @@ -61,8 +61,12 @@ elseif(platform STREQUAL GAP9) if (NOT HEXLIST) target_compile_options(network PUBLIC -DNOFLASH) else() - gvsoc_flags_add_files_to_hyperflash(GVSOC_HEX_HYPERFLASH_FLAGS HEXLIST) - list(APPEND GVSOC_EXTRA_FLAGS ${GVSOC_HEX_HYPERFLASH_FLAGS}) + message(STATUS "==== HEXLIST ====") + foreach(f ${HEXLIST}) + message(STATUS "HEXLIST file: ${f}") + endforeach() + gvsoc_flags_add_files_to_flash(GAPY_RUNNER_ARGS HEXLIST) + message(STATUS "GAPY_RUNNER_ARGS: ${GAPY_RUNNER_ARGS}") endif() add_subdirectory(Platforms/GAP9) diff --git a/DeeployTest/Platforms/GAP9/sdk.config b/DeeployTest/Platforms/GAP9/sdk.config index 16695a4acc..c0b2bdf2e8 100644 --- a/DeeployTest/Platforms/GAP9/sdk.config +++ b/DeeployTest/Platforms/GAP9/sdk.config @@ -11,12 +11,14 @@ CONFIG_DRIVER_CLUSTER_CONF_PROPERTY_ICACHE_CONF=0x7FF CONFIG_DRIVER_TYPE_FLASH=y CONFIG_DRIVER_TYPE_RAM=y -# CONFIG_DRIVER_MRAM=y +CONFIG_DRIVER_MRAM=y +CONFIG_READFS_FLASH_TYPE_OSPI=y + CONFIG_DRIVER_READFS=y # CONFIG_READFS_FLASH_TYPE_MRAM=y -# CONFIG_DRIVER_APS256XXN=y -# CONFIG_DRIVER_RAM_API=y +CONFIG_DRIVER_APS256XXN=y +CONFIG_DRIVER_RAM_API=y CONFIG_ENABLE_LIBMATH=y diff --git a/DeeployTest/Platforms/GAP9/src/deeploytest.c b/DeeployTest/Platforms/GAP9/src/deeploytest.c index 465e529c77..0aa1149272 100644 --- a/DeeployTest/Platforms/GAP9/src/deeploytest.c +++ b/DeeployTest/Platforms/GAP9/src/deeploytest.c @@ -132,7 +132,7 @@ int main(void) { for (uint32_t buf = 0; buf < DeeployNetwork_num_outputs; buf++) { tot_tested += DeeployNetwork_outputs_bytes[buf] / sizeof(OUTPUTTYPE); - if ((uint32_t)DeeployNetwork_outputs[buf] < 0x1000000) { + if ((uint32_t)DeeployNetwork_outputs[buf] < 0x10000000) { compbuf = pi_l2_malloc(DeeployNetwork_outputs_bytes[buf]); ram_read(compbuf, DeeployNetwork_outputs[buf], DeeployNetwork_outputs_bytes[buf]); @@ -170,7 +170,7 @@ int main(void) { } } } - if ((uint32_t)DeeployNetwork_outputs[buf] < 0x1000000) { + if ((uint32_t)DeeployNetwork_outputs[buf] < 0x10000000) { pi_l2_free(compbuf, DeeployNetwork_outputs_bytes[buf]); } } diff --git a/DeeployTest/output.txt b/DeeployTest/output.txt new file mode 100644 index 0000000000..2152566c73 --- /dev/null +++ b/DeeployTest/output.txt @@ -0,0 +1,869 @@ +-- Building for platform 'GAP9' +-- [SDK] Version: 5.20.4 +-- [Platform] GVSoC +-- [OS] FreeRTOS (Scheduler v2) +-- [Printf] Semihost +-- [Board] GAP Family : 9 +-- [Board] GAP Version : 2 +-- ============================= Project Configuration ============================ +-- [Deeploy] platform = GAP9 +-- [Deeploy] use_dma = +-- ================================================================================ +-- +-- ==== HEXLIST ==== +-- HEXLIST file: /app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex +-- HEXLIST file: /app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex +-- GAPY_RUNNER_ARGS: --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex@flash:readfs_flash:file;--flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex@flash:readfs_flash:file +-- [Deeploy GAP9] L3 mode: using gapy with readfs +-- [Deeploy GAP9] Adding readfs files: --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex@flash:readfs_flash:file;--flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex@flash:readfs_flash:file +-- [Deeploy GAP9] GAPY_CMD = /app/install/gap9-sdk/utils/gapy_v2/bin/gapy --target=gap9.evk --target-dir=/app/install/gap9-sdk/install/workstation/generators --model-dir=/app/install/gap9-sdk/install/workstation/models --platform=gvsoc --work-dir=/app/Deeploy/DeeployTest/TEST_GAP9/build/gvsoc_workdir --target-property=boot.flash_device=mram --target-property=boot.mode=flash --multi-flash-content=/app/install/gap9-sdk/utils/layouts/default_layout_multi_readfs.json --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/build/testFloatMatmul@mram:app:binary --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex@flash:readfs_flash:file --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex@flash:readfs_flash:file --flash-property=/app/install/gap9-sdk/install/target/bin/fsbl@mram:fsbl:binary --flash-property=/app/install/gap9-sdk/install/target/bin/ssbl@mram:ssbl:binary --py-stack image flash run --binary=/app/Deeploy/DeeployTest/TEST_GAP9/build/testFloatMatmul +-- [Log] none +-- [PULP-NN] pmsis target exists, extracting properties... +-- [PULP-NN] PMSIS_INCLUDES: /app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/maestro/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i2s/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/efuse/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/fll/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/cluster/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_core/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/timer/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/fc_event/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/pad/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/gpio/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/ffc/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/perf/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/watchdog/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i2c/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i2s/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i3c/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_datamove/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/spim/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_timeout/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_timestamp/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/dmacpy/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/pwm/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/rtc/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/xip/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_hyperbus/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_octospi/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_aes/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_aes_dual_core/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_cpi/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_csi2/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_uart/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_fifo/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_sdio/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/quiddikey/include;/app/install/gap9-sdk/rtos/pmsis/implem/include;/app/install/gap9-sdk/rtos/pmsis/implem/rtos/include;/app/install/gap9-sdk/rtos/pmsis/bsp/boards/include;/app/install/gap9-sdk/rtos/pmsis/bsp/buffer;/app/install/gap9-sdk/rtos/pmsis/bsp/crc/crc32/include;/app/install/gap9-sdk/rtos/pmsis/bsp/crc/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/api/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/mram/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/mx25u51245g/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/include;/app/install/gap9-sdk/rtos/pmsis/bsp/powersupply/api/include;/app/install/gap9-sdk/rtos/pmsis/bsp/powersupply/powersupplygpio/include;/app/install/gap9-sdk/rtos/pmsis/bsp/powersupply/include;/app/install/gap9-sdk/rtos/pmsis/bsp/ram/api/include;/app/install/gap9-sdk/rtos/pmsis/bsp/ram/aps256xxn/include;/app/install/gap9-sdk/rtos/pmsis/bsp/ram/include;/app/install/gap9-sdk/rtos/pmsis/bsp/include;/app/Deeploy/DeeployTest/TEST_GAP9/build/devicetree/internal/include;/app/Deeploy/DeeployTest/TEST_GAP9/build/devicetree/include;/app/Deeploy/DeeployTest/TEST_GAP9/build/devicetree/fpv2/include;/app/install/gap9-sdk/rtos/pmsis/include +-- [PULP-NN] PMSIS_COMPILE_OPTIONS: -D__GAP__;-D__riscv__;-D__RISCV_ARCH_GAP__=1;-D__USE_TCDM_MALLOC__=1;-D__FC_MALLOC_NATIVE__=0;-D__L2_MALLOC_NATIVE__=0;-D__PMSIS_L2_MALLOC_NATIVE__=0;-DPMSIS_DRIVERS=1;-DFEATURE_CLUSTER;-DGAP_SDK_VERSION=5.20.4;-D__PLATFORM_GVSOC__;-D__PLATFORM__=ARCHI_PLATFORM_GVSOC;-D__FREERTOS__;-DSCHEDULER_V2;-DSCHEDULER_V3;-D__SEMIHOSTING__;-DPRINTF_SEMIHOST;-D__GAP_DRIVER_READFS__=1 +-- [PULP-NN] Added PMSIS includes to pulp-nn-mixed +-- ============================= Simulation Configuration ============================ +-- [Simulator] QuestaSim = questa-2022.3 +-- [Simulator] Verilator = verilator-4.110 +-- [Simulator] VCS = vcs-2020.12 +-- [Simulator] banshee_simulation = OFF +-- [Simulator] banshee_configuration = +-- [Simulator] gvsoc_simulation = ON +-- [Simulator] banshee_stack_size = 16777216 +-- [Simulator] num_threads = 1 +-- ================================================================================ +-- +-- Configuring done +-- Generating done +-- Build files have been written to: /app/Deeploy/DeeployTest/TEST_GAP9/build +Consolidate compiler generated dependencies of target pmsis_printf +[ 0%] Built target pmsis_printf +Consolidate compiler generated dependencies of target pulp_allocator +[ 0%] Built target pulp_allocator +Consolidate compiler generated dependencies of target freertos_libs +[ 0%] Built target freertos_libs +Consolidate compiler generated dependencies of target fll_pmu_lib +[ 1%] Built target fll_pmu_lib +Scanning dependencies of target pmsis +Consolidate compiler generated dependencies of target pmsis +[ 1%] Building C object pmsis/CMakeFiles/pmsis.dir/implem/utils/gap_io.c.obj +[ 1%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/bsp/bsp.c.obj +[ 1%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/fs/read_fs/read_fs.c.obj +[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/partition/flash_partition_v2.c.obj +[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/partition/secret_storage.c.obj +[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/__/devicetree/internal/devicetree_internal.c.obj +[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/__/devicetree/src/dt.c.obj +[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/__/devicetree/fpv2/devicetree_fpv2.c.obj +[ 2%] Linking C static library ../lib/libpmsis.a +[ 6%] Built target pmsis +Scanning dependencies of target pmsis_backend +Consolidate compiler generated dependencies of target pmsis_backend +[ 7%] Built target pmsis_backend +Scanning dependencies of target freertos +Consolidate compiler generated dependencies of target freertos +[ 9%] Built target freertos +Consolidate compiler generated dependencies of target pulp-nn-mixed +[ 9%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_i2.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_i4.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_i8.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_u2.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_u4.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_u8.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_i2.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_i4.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_i8.c.obj +[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_u2.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_u4.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_u8.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_i2.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_i4.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_i8.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_u2.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_u4.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_u8.c.obj +[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_i2.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_i4.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_i8.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_u2.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_u4.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_u8.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_i2.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_i4.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_i8.c.obj +[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_u2.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_u4.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_u8.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_i2.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_i4.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_i8.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_u2.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_u4.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_u8.c.obj +[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_i2.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_i4.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_i8.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_u2.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_u4.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_u8.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_i2.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_i4.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_i8.c.obj +[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_u2.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_u4.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_u8.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_i2.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_i4.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_i8.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_u2.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_u4.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_u8.c.obj +[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_i2.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_i4.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_i8.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_u2.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_u4.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_u8.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_i2.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_i4.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_i8.c.obj +[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_u2.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_u4.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_u8.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_i2.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_i4.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_i8.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_u2.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_u4.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_u8.c.obj +[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_i2.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_i4.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_i8.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_u2.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_u4.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_u8.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_i2.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_i4.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_i8.c.obj +[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_u2.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_u4.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_u8.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_i2.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_i4.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_i8.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_u2.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_u4.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_u8.c.obj +[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_i2.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_i4.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_i8.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_u2.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_u4.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_u8.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_i2.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_i4.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_i8.c.obj +[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_u2.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_u4.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_u8.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_i2.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_i4.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_i8.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_u2.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_u4.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_u8.c.obj +[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_i2.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_i4.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_i8.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_u2.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_u4.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_u8.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_i2.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_i4.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_i8.c.obj +[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_u2.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_u4.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_u8.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_i2.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_i4.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_i8.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_u2.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_u4.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_u8.c.obj +[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_i2.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_i4.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_i8.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_u2.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_u4.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_u8.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_i2.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_i4.c.obj +[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_i8.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_u2.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_u4.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_u8.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_i2.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_i4.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_i8.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_u2.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_u4.c.obj +[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_u8.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_i2.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_i4.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_i8.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_u2.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_u4.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_u8.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_i2.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_i4.c.obj +[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_i8.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_u2.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_u4.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_u8.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_i2.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_i4.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_i8.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_u2.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_u4.c.obj +[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_u8.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_i2.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_i4.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_i8.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_u2.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_u4.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_u8.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4.c.obj +[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_i2.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_i4.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_i8.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_u2.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_u4.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_u8.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_i2.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_i4.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_i8.c.obj +[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_u2.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_u4.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_u8.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_i2.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_i4.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_i8.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_u2.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_u4.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_u8.c.obj +[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_i2.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_i4.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_i8.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_u2.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_u4.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_u8.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_i2.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_i4.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_i8.c.obj +[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_u2.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_u4.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_u8.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_i2.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_i4.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_i8.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_u2.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_u4.c.obj +[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_u8.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_i2.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_i4.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_i8.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_u2.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_u4.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_u8.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8.c.obj +[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_i2.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_i4.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_i8.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_u2.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_u4.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_u8.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i2_i2.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i2_i4.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i2_i8.c.obj +[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i4_i2.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i4_i4.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i4_i8.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i8_i2.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i8_i4.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i8_i8.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u2_i2.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u2_i4.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u2_i8.c.obj +[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u4_i2.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u4_i4.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u4_i8.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u8_i2.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u8_i4.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u8_i8.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i2_i2.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i2_i4.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i2_i8.c.obj +[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i4_i2.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i4_i4.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i4_i8.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i8_i2.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i8_i4.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i8_i8.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u2_i2.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u2_i4.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u2_i8.c.obj +[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u4_i2.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u4_i4.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u4_i8.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u8_i2.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u8_i4.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u8_i8.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i2_i2.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i2_i4.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i2_i8.c.obj +[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i4_i2.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i4_i4.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i4_i8.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i8_i2.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i8_i4.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i8_i8.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u2_i2.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u2_i4.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u2_i8.c.obj +[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u4_i2.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u4_i4.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u4_i8.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u8_i2.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u8_i4.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u8_i8.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i2_i2.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i2_i4.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i2_i8.c.obj +[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i4_i2.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i4_i4.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i4_i8.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i8_i2.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i8_i4.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i8_i8.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u2_i2.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u2_i4.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u2_i8.c.obj +[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u4_i2.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u4_i4.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u4_i8.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u8_i2.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u8_i4.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u8_i8.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i2_i2.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i2_i4.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i2_i8.c.obj +[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i4_i2.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i4_i4.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i4_i8.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i8_i2.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i8_i4.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i8_i8.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u2_i2.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u2_i4.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u2_i8.c.obj +[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u4_i2.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u4_i4.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u4_i8.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u8_i2.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u8_i4.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u8_i8.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i2_i2.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i2_i4.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i2_i8.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i4_i2.c.obj +[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i4_i4.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i4_i8.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i8_i2.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i8_i4.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i8_i8.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u2_i2.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u2_i4.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u2_i8.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u4_i2.c.obj +[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u4_i4.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u4_i8.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u8_i2.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u8_i4.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u8_i8.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i2_i2.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i2_i4.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i2_i8.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i4_i2.c.obj +[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i4_i4.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i4_i8.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i8_i2.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i8_i4.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i8_i8.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u2_i2.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u2_i4.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u2_i8.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u4_i2.c.obj +[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u4_i4.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u4_i8.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u8_i2.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u8_i4.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u8_i8.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i2_i2.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i2_i4.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i2_i8.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i4_i2.c.obj +[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i4_i4.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i4_i8.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i8_i2.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i8_i4.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i8_i8.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u2_i2.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u2_i4.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u2_i8.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u4_i2.c.obj +[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u4_i4.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u4_i8.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u8_i2.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u8_i4.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u8_i8.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i2_i2.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i2_i4.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i2_i8.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i4_i2.c.obj +[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i4_i4.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i4_i8.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i8_i2.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i8_i4.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i8_i8.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u2_i2.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u2_i4.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u2_i8.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u4_i2.c.obj +[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u4_i4.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u4_i8.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u8_i2.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u8_i4.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u8_i8.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i2_i2.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i2_i4.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i2_i8.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i4_i2.c.obj +[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i4_i4.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i4_i8.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i8_i2.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i8_i4.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i8_i8.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u2_i2.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u2_i4.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u2_i8.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u4_i2.c.obj +[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u4_i4.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u4_i8.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u8_i2.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u8_i4.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u8_i8.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i2_i2.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i2_i4.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i2_i8.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i4_i2.c.obj +[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i4_i4.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i4_i8.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i8_i2.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i8_i4.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i8_i8.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u2_i2.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u2_i4.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u2_i8.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u4_i2.c.obj +[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u4_i4.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u4_i8.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u8_i2.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u8_i4.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u8_i8.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i2_i2.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i2_i4.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i2_i8.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i4_i2.c.obj +[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i4_i4.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i4_i8.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i8_i2.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i8_i4.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i8_i8.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u2_i2.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u2_i4.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u2_i8.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u4_i2.c.obj +[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u4_i4.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u4_i8.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u8_i2.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u8_i4.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u8_i8.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i2_i32_i2.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i2_i32_i4.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i2_i32_i8.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i4_i32_i2.c.obj +[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i4_i32_i4.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i4_i32_i8.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i8_i32_i2.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i8_i32_i4.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i8_i32_i8.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u2_i32_i2.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u2_i32_i4.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u2_i32_i8.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u4_i32_i2.c.obj +[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u4_i32_i4.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u4_i32_i8.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u8_i32_i2.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u8_i32_i4.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u8_i32_i8.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i2_i2.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i2_i4.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i2_i8.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i4_i2.c.obj +[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i4_i4.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i4_i8.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i8_i2.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i8_i4.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i8_i8.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u2_i2.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u2_i4.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u2_i8.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u4_i2.c.obj +[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u4_i4.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u4_i8.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u8_i2.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u8_i4.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u8_i8.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i2_i2.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i2_i4.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i2_i8.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i4_i2.c.obj +[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i4_i4.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i4_i8.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i8_i2.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i8_i4.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i8_i8.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u2_i2.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u2_i4.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u2_i8.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u4_i2.c.obj +[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u4_i4.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u4_i8.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u8_i2.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u8_i4.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u8_i8.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i2_i2.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i2_i4.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i2_i8.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i4_i2.c.obj +[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i4_i4.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i4_i8.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i8_i2.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i8_i4.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i8_i8.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u2_i2.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u2_i4.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u2_i8.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u4_i2.c.obj +[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u4_i4.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u4_i8.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u8_i2.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u8_i4.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u8_i8.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i2_i2.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i2_i4.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i2_i8.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i4_i2.c.obj +[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i4_i4.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i4_i8.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i8_i2.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i8_i4.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i8_i8.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u2_i2.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u2_i4.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u2_i8.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u4_i2.c.obj +[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u4_i4.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u4_i8.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u8_i2.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u8_i4.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u8_i8.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i2_i2.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i2_i4.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i2_i8.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i4_i2.c.obj +[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i4_i4.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i4_i8.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i8_i2.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i8_i4.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i8_i8.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u2_i2.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u2_i4.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u2_i8.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u4_i2.c.obj +[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u4_i4.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u4_i8.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u8_i2.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u8_i4.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u8_i8.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i2_i2.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i2_i4.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i2_i8.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i4_i2.c.obj +[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i4_i4.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i4_i8.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i8_i2.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i8_i4.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i8_i8.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u2_i2.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u2_i4.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u2_i8.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u4_i2.c.obj +[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u4_i4.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u4_i8.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u8_i2.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u8_i4.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u8_i8.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i2_i2.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i2_i4.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i2_i8.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i4_i2.c.obj +[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i4_i4.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i4_i8.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i8_i2.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i8_i4.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i8_i8.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u2_i2.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u2_i4.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u2_i8.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u4_i2.c.obj +[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u4_i4.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u4_i8.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u8_i2.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u8_i4.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u8_i8.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i2_i2.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i2_i4.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i2_i8.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i4_i2.c.obj +[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i4_i4.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i4_i8.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i8_i2.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i8_i4.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i8_i8.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u2_i2.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u2_i4.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u2_i8.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u4_i2.c.obj +[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u4_i4.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u4_i8.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u8_i2.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u8_i4.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u8_i8.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i2_i2.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i2_i4.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i2_i8.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i4_i2.c.obj +[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i4_i4.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i4_i8.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i8_i2.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i8_i4.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i8_i8.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u2_i2.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u2_i4.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u2_i8.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u4_i2.c.obj +[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u4_i4.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u4_i8.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u8_i2.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u8_i4.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u8_i8.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i2_i2.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i2_i4.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i2_i8.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i4_i2.c.obj +[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i4_i4.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i4_i8.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i8_i2.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i8_i4.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i8_i8.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u2_i2.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u2_i4.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u2_i8.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u4_i2.c.obj +[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u4_i4.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u4_i8.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u8_i2.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u8_i4.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u8_i8.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i2_i2.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i2_i4.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i2_i8.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i4_i2.c.obj +[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i4_i4.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i4_i8.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i8_i2.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i8_i4.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i8_i8.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u2_i2.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u2_i4.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u2_i8.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u4_i2.c.obj +[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u4_i4.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u4_i8.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u8_i2.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u8_i4.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u8_i8.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i2_i2.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i2_i4.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i2_i8.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i4_i2.c.obj +[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i4_i4.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i4_i8.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i8_i2.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i8_i4.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i8_i8.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u2_i2.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u2_i4.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u2_i8.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u4_i2.c.obj +[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u4_i4.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u4_i8.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u8_i2.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u8_i4.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u8_i8.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i2_i2.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i2_i4.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i2_i8.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i4_i2.c.obj +[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i4_i4.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i4_i8.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i8_i2.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i8_i4.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i8_i8.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u2_i2.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u2_i4.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u2_i8.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u4_i2.c.obj +[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u4_i4.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u4_i8.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u8_i2.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u8_i4.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u8_i8.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i2_i2.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i2_i4.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i2_i8.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i4_i2.c.obj +[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i4_i4.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i4_i8.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i8_i2.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i8_i4.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i8_i8.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u2_i2.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u2_i4.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u2_i8.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u4_i2.c.obj +[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u4_i4.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u4_i8.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u8_i2.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u8_i4.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u8_i8.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_i2.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_i4.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_i8.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_u2.c.obj +[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_u4.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_u8.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_i2.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_i4.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_i8.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_u2.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_u4.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_u8.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_i2.c.obj +[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_i4.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_i8.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_u2.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_u4.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_u8.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_i2.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_i4.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_i8.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_u2.c.obj +[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_u4.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_u8.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_i2.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_i4.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_i8.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_u2.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_u4.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_u8.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_i2.c.obj +[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_i4.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_i8.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_u2.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_u4.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_u8.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_i2.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_i4.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_i8.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_u2.c.obj +[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_u4.c.obj +[ 94%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_u8.c.obj +[ 94%] Linking C static library ../../../../lib/libpulp-nn-mixed.a +[ 94%] Built target pulp-nn-mixed +Consolidate compiler generated dependencies of target deeploybasic +[ 97%] Built target deeploybasic +Consolidate compiler generated dependencies of target deeploygap9 +[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/src/Util.c.obj +[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/src/dory_dma.c.obj +[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/src/dory_mem.c.obj +[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Convolution_fp32.c.obj +[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/DWConvolution_fp32.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/GELU.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Gemm.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Layernorm.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Matmul.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/MaxPool.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/RQiHardswish.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Relu.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/RequantShift.c.obj +[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Softmax.c.obj +[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/UniformRequantShift.c.obj +[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Util.c.obj +[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/gemv.c.obj +[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/iRMSnorm.c.obj +[100%] Linking C static library ../../lib/libdeeploygap9.a +[100%] Built target deeploygap9 +Consolidate compiler generated dependencies of target network +[100%] Building C object DeeployTest/CMakeFiles/network.dir/TEST_GAP9/Tests/testFloatMatmul/Network.c.obj +[100%] Built target network +Consolidate compiler generated dependencies of target testFloatMatmul +[100%] Building C object DeeployTest/Platforms/GAP9/CMakeFiles/testFloatMatmul.dir/src/CycleCounter.c.obj +[100%] Building C object DeeployTest/Platforms/GAP9/CMakeFiles/testFloatMatmul.dir/src/deeploytest.c.obj +[100%] Linking C executable ../../../testFloatMatmul +[100%] Built target testFloatMatmul +[ 0%] Built target pmsis_printf +[ 0%] Built target pulp_allocator +[ 0%] Built target freertos_libs +[ 1%] Built target fll_pmu_lib +Consolidate compiler generated dependencies of target pmsis +[ 6%] Built target pmsis +[ 7%] Built target pmsis_backend +[ 9%] Built target freertos +Consolidate compiler generated dependencies of target pulp-nn-mixed +[ 94%] Built target pulp-nn-mixed +[ 97%] Built target deeploybasic +Consolidate compiler generated dependencies of target deeploygap9 +[100%] Built target deeploygap9 +Consolidate compiler generated dependencies of target network +[100%] Built target network +Consolidate compiler generated dependencies of target testFloatMatmul +[100%] Built target testFloatMatmul +[100%] Built target image +Generation Directory: /app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul +Test Directory : Tests/testFloatMatmul +Test Name : testFloatMatmul diff --git a/cmake/gap9/gap9_gvsoc.cmake b/cmake/gap9/gap9_gvsoc.cmake new file mode 100644 index 0000000000..1c62aab5bd --- /dev/null +++ b/cmake/gap9/gap9_gvsoc.cmake @@ -0,0 +1,120 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +# Mark that GAP9-specific gvsoc emulation is defined +set(GAP9_GVSOC_DEFINED TRUE) + +macro(add_gvsoc_emulation name target) + if(NOT DEFINED GVSOC_INSTALL_DIR) + message(FATAL_ERROR "Environment variable GVSOC_INSTALL_DIR not set") + endif() + + set(GVSOC_WORKDIR ${CMAKE_BINARY_DIR}/gvsoc_workdir) + make_directory(${GVSOC_WORKDIR}) + set(GVSOC_BINARY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${name}") + + # GAP9 SDK paths + set(GAP9_SDK_HOME $ENV{GAP_SDK_HOME}) + if(NOT DEFINED GAP9_SDK_HOME) + message(FATAL_ERROR "Environment variable GAP_SDK_HOME not set") + endif() + + # Check if GAPY_RUNNER_ARGS is defined (indicates L3 with readfs files) + if(DEFINED GAPY_RUNNER_ARGS) + # L3 mode: Use gapy with flash layout and readfs + message(STATUS "[Deeploy GAP9] L3 mode: using gapy with readfs") + + set(GAPY "${GAP9_SDK_HOME}/utils/gapy_v2/bin/gapy") + set(FLASH_LAYOUT "${GAP9_SDK_HOME}/utils/layouts/default_layout_multi_readfs.json") + set(FSBL_BINARY "${GAP9_SDK_HOME}/install/target/bin/fsbl") + set(SSBL_BINARY "${GAP9_SDK_HOME}/install/target/bin/ssbl") + + # Build the gapy command + set(GAPY_CMD + ${GAPY} + --target=gap9.evk + --target-dir=${GAP9_SDK_HOME}/install/workstation/generators + --model-dir=${GAP9_SDK_HOME}/install/workstation/models + --platform=gvsoc + --work-dir=${GVSOC_WORKDIR} + --target-property=boot.flash_device=mram + --target-property=boot.mode=flash + --multi-flash-content=${FLASH_LAYOUT} + --flash-property=${GVSOC_BINARY}@mram:app:binary + ) + + # Add readfs files if provided + if(GAPY_RUNNER_ARGS) + list(LENGTH GAPY_RUNNER_ARGS num_readfs_files) + message(STATUS "[Deeploy GAP9] Adding ${num_readfs_files} readfs file(s)") + list(APPEND GAPY_CMD ${GAPY_RUNNER_ARGS}) + endif() + + # Add fsbl/ssbl + list(APPEND GAPY_CMD + --flash-property=${FSBL_BINARY}@mram:fsbl:binary + --flash-property=${SSBL_BINARY}@mram:ssbl:binary + ) + + # Add final commands + list(APPEND GAPY_CMD + --py-stack + image flash run + --binary=${GVSOC_BINARY} + ) + + # Convert list to string for printing + string(REPLACE ";" " " GAPY_CMD_STR "${GAPY_CMD}") + + add_custom_target(gvsoc_${name} + DEPENDS ${name} + WORKING_DIRECTORY ${GVSOC_WORKDIR} + COMMAND bash -c "${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ 2>/dev/null || true" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${GAP9_SDK_HOME}/utils/efuse/GAP9/efuse_hyper_preload.data + ${GVSOC_WORKDIR}/chip.efuse_preload.data + COMMAND ${CMAKE_COMMAND} -E echo "==========================================" + COMMAND ${CMAKE_COMMAND} -E echo "[Deeploy GAP9] Executing gapy command (L3 mode with readfs):" + COMMAND ${CMAKE_COMMAND} -E echo "${GAPY_CMD_STR}" + COMMAND ${CMAKE_COMMAND} -E echo "==========================================" + COMMAND ${GAPY_CMD} + COMMENT "Simulating ${name} with gapy for GAP9 (L3 mode)" + POST_BUILD + USES_TERMINAL + VERBATIM + ) + + else() + # L2 mode: Use traditional gvsoc command directly + message(STATUS "[Deeploy GAP9] L2 mode: using traditional gvsoc") + + set(GVSOC_EXECUTABLE "${GVSOC_INSTALL_DIR}/bin/gvsoc") + + set(GVSOC_CMD + ${GVSOC_EXECUTABLE} + --target=${target} + --binary ${GVSOC_BINARY} + --work-dir=${GVSOC_WORKDIR} + ${GVSOC_EXTRA_FLAGS} + image flash run + ) + + # Convert list to string for printing + string(REPLACE ";" " " GVSOC_CMD_STR "${GVSOC_CMD}") + + add_custom_target(gvsoc_${name} + DEPENDS ${name} + WORKING_DIRECTORY ${GVSOC_WORKDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ || true + COMMAND ${CMAKE_COMMAND} -E echo "==========================================" + COMMAND ${CMAKE_COMMAND} -E echo "[Deeploy GAP9] Executing gvsoc command (L2 mode):" + COMMAND ${CMAKE_COMMAND} -E echo "${GVSOC_CMD_STR}" + COMMAND ${CMAKE_COMMAND} -E echo "==========================================" + COMMAND ${GVSOC_CMD} + COMMENT "Simulating ${name} with gvsoc for GAP9 (L2 mode)" + POST_BUILD + USES_TERMINAL + ) + endif() +endmacro() \ No newline at end of file diff --git a/cmake/simulation.cmake b/cmake/simulation.cmake index d3d87ab311..c3356855ff 100644 --- a/cmake/simulation.cmake +++ b/cmake/simulation.cmake @@ -69,6 +69,14 @@ function(gvsoc_flags_add_files_to_hyperflash out_var files_var) set(${out_var} ${flags} PARENT_SCOPE) endfunction() +function(gvsoc_flags_add_files_to_flash out_var files_var) + set(flags) + foreach(file ${${files_var}}) + list(APPEND flags "--flash-property=${file}@flash:readfs_flash:files") + endforeach() + set(${out_var} ${flags} PARENT_SCOPE) +endfunction() + # The macro creates a new gvsoc_ cmake target which executes the final # binary on the gvsoc simulator. To give extra flags to the gvsoc command, set # the GVSOC_EXTRA_FLAGS variable. From 6b5c2e595010ff7100e2e239bda884c3d549e4bf Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 21 Nov 2025 21:07:22 +0000 Subject: [PATCH 13/23] [GAP9] Layernorm Epsilon ABI Issue --- Deeploy/Targets/PULPOpen/Templates/FloatLayernormTemplate.py | 4 ++-- TargetLibraries/PULPOpen/inc/kernel/Layernorm.h | 4 ++-- TargetLibraries/PULPOpen/src/Layernorm.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Deeploy/Targets/PULPOpen/Templates/FloatLayernormTemplate.py b/Deeploy/Targets/PULPOpen/Templates/FloatLayernormTemplate.py index 9d4f60e8fc..ce6f409a28 100644 --- a/Deeploy/Targets/PULPOpen/Templates/FloatLayernormTemplate.py +++ b/Deeploy/Targets/PULPOpen/Templates/FloatLayernormTemplate.py @@ -11,8 +11,8 @@ ${data_out}, ${weight}, ${bias}, - ${epsilon}, ${size}, - ${lastDimLength} + ${lastDimLength}, + ${epsilon} ); """) \ No newline at end of file diff --git a/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h b/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h index 43e9c55cf4..55bb28fb08 100644 --- a/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h +++ b/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h @@ -11,7 +11,7 @@ void PULP_Layernorm_fp32_fp32(float32_t *data_in, float32_t *data_out, float32_t *scale, float32_t *bias, - float32_t epsilon, uint32_t size, - uint32_t lastDimLength); + uint32_t size, + uint32_t lastDimLength, float32_t epsilon); #endif // __DEEPLOY_MATH_LAYERNORM_KERNEL_HEADER__ \ No newline at end of file diff --git a/TargetLibraries/PULPOpen/src/Layernorm.c b/TargetLibraries/PULPOpen/src/Layernorm.c index 73d1bbab58..e8829e4e1e 100644 --- a/TargetLibraries/PULPOpen/src/Layernorm.c +++ b/TargetLibraries/PULPOpen/src/Layernorm.c @@ -12,8 +12,8 @@ void PULP_Layernorm_fp32_fp32(float32_t *data_in, float32_t *data_out, float32_t *scale, float32_t *bias, - float32_t epsilon, uint32_t size, - uint32_t lastDimLength) { + uint32_t size, + uint32_t lastDimLength, float32_t epsilon) { int8_t core_id = pi_core_id(); int8_t log2Core = LOG2(NUM_CORES); From 3a1d87705ba1817a74c62ba2d2ec7cd1769b251d Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Thu, 27 Nov 2025 13:49:37 +0000 Subject: [PATCH 14/23] [GAP9] Fixed Zero Cyclecounter Issue --- DeeployTest/Platforms/GAP9/src/deeploytest.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/DeeployTest/Platforms/GAP9/src/deeploytest.c b/DeeployTest/Platforms/GAP9/src/deeploytest.c index 0aa1149272..f4818e0104 100644 --- a/DeeployTest/Platforms/GAP9/src/deeploytest.c +++ b/DeeployTest/Platforms/GAP9/src/deeploytest.c @@ -17,6 +17,7 @@ #define SLAVESTACKSIZE 3800 struct pi_device cluster_dev; +uint32_t total_cycles = 0; typedef struct { void *expected; @@ -68,7 +69,12 @@ void InitNetworkWrapper(void *args) { void RunNetworkWrapper(void *args) { (void)args; + // Initialize performance counter in cluster context + ResetTimer(); + StartTimer(); RunNetwork(pi_core_id(), pi_cl_cluster_nb_cores()); + total_cycles = getCycles(); + StopTimer(); } int main(void) { @@ -113,10 +119,7 @@ int main(void) { pi_cluster_task(&cluster_task, RunNetworkWrapper, NULL); cluster_task.slave_stack_size = SLAVESTACKSIZE; - ResetTimer(); - StartTimer(); pi_cluster_send_task_to_cl(&cluster_dev, &cluster_task); - StopTimer(); #ifndef CI printf("Output:\r\n"); @@ -175,7 +178,7 @@ int main(void) { } } - printf("Runtime: %u cycles\r\n", getCycles()); + printf("Runtime: %u cycles\r\n", total_cycles); printf("Errors: %u out of %u \r\n", tot_err, tot_tested); return 0; From faa6421b437f3ee49e5b67300c8d741a3597f49b Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:49:30 +0000 Subject: [PATCH 15/23] [GAP9] Add CI --- .github/workflows/_runner-gap9-tiled.yml | 78 +++++++ .github/workflows/_runner-gap9.yml | 54 +++++ .github/workflows/ci-platform-gap9-tiled.yml | 213 +++++++++++++++++++ .github/workflows/ci-platform-gap9.yml | 93 ++++++++ 4 files changed, 438 insertions(+) create mode 100644 .github/workflows/_runner-gap9-tiled.yml create mode 100644 .github/workflows/_runner-gap9.yml create mode 100644 .github/workflows/ci-platform-gap9-tiled.yml create mode 100644 .github/workflows/ci-platform-gap9.yml diff --git a/.github/workflows/_runner-gap9-tiled.yml b/.github/workflows/_runner-gap9-tiled.yml new file mode 100644 index 0000000000..11f17b7537 --- /dev/null +++ b/.github/workflows/_runner-gap9-tiled.yml @@ -0,0 +1,78 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +--- +name: _runner-gap9-tiled + +"on": + workflow_call: + inputs: + runner: + required: true + type: string + docker-image: + required: true + type: string + test-name: + required: true + type: string + num-cores: + required: false + default: 8 + type: number + L1: + required: false + default: "[64000]" + type: string + default-memory-level: + required: false + default: "L2" + type: string + double-buffer: + required: false + default: false + type: boolean + memory-allocation-strategy: + required: false + default: "MiniMalloc" + type: string + search-strategy: + required: false + default: "random-max" + type: string + +jobs: + test-runner-gap9-tiled: + strategy: + fail-fast: false + matrix: + L1: ${{ fromJSON(inputs.L1) }} + runs-on: ${{ inputs.runner }} + container: + image: ${{ inputs.docker-image }} + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build Deeploy + shell: bash + run: pip install -e . + - name: Cache ccache + uses: actions/cache/restore@v4 + with: + path: /app/.ccache + key: ccache-ci + - name: Run Test + uses: nick-fields/retry@v3 + with: + timeout_minutes: 15 + max_attempts: 3 + retry_on: timeout + command: | + cd DeeployTest + mkdir -p /app/.ccache + export CCACHE_DIR=/app/.ccache + python testRunner_tiled_gap9.py -t Tests/${{ inputs.test-name }} --cores=${{ inputs.num-cores }} --l1 ${{ matrix.L1 }} --defaultMemLevel=${{ inputs.default-memory-level }} ${{ inputs.double-buffer && '--doublebuffer' || '' }} --memAllocStrategy=${{ inputs.memory-allocation-strategy }} --searchStrategy=${{ inputs.search-strategy }} + shell: bash diff --git a/.github/workflows/_runner-gap9.yml b/.github/workflows/_runner-gap9.yml new file mode 100644 index 0000000000..d55046e227 --- /dev/null +++ b/.github/workflows/_runner-gap9.yml @@ -0,0 +1,54 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +--- +name: _runner-gap9 + +"on": + workflow_call: + inputs: + runner: + required: true + type: string + docker-image: + required: true + type: string + test-names: + required: true + type: string + num-cores: + required: true + type: number + +jobs: + test-runner-gap9: + runs-on: ${{ inputs.runner }} + container: + image: ${{ inputs.docker-image }} + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build Deeploy + shell: bash + run: pip install -e . + - name: Cache ccache + uses: actions/cache/restore@v4 + with: + path: /app/.ccache + key: ccache-ci + - name: Run Test + run: | + testNames="${{ inputs.test-names }}" + cd DeeployTest + mkdir -p /app/.ccache + export CCACHE_DIR=/app/.ccache + echo "$testNames" | while IFS= read -r testName; do + if [[ -n "$testName" ]]; then + echo "Running test: $testName" + python testRunner_gap9.py -t Tests/$testName --cores=${{ inputs.num-cores }} + fi + done + shell: bash diff --git a/.github/workflows/ci-platform-gap9-tiled.yml b/.github/workflows/ci-platform-gap9-tiled.yml new file mode 100644 index 0000000000..e059c8f147 --- /dev/null +++ b/.github/workflows/ci-platform-gap9-tiled.yml @@ -0,0 +1,213 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +--- +name: CI • GAP9 (Tiled) + +"on": + push: + branches: + - "**" + tags: + - "v*.*.*" + pull_request: + workflow_dispatch: + inputs: + docker_image_deeploy: + description: "Deeploy Image to use" + required: false + default: "ghcr.io/pulp-platform/deeploy:devel" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + select-env: + uses: ./.github/workflows/_select-env.yml + with: + docker_image_deeploy: ${{ inputs.docker_image_deeploy }} + + gap9-kernels-tiled-singlebuffer-L2: + needs: select-env + strategy: + fail-fast: false + matrix: + test-data: + - name: "testMatMul" + L1: [64000, 32000, 16000] + - name: "test2DRequantizedConv" + L1: [8000, 6000, 4000] + - name: "test2DRequantizedStriddedPaddedConv" + L1: [600] + - name: "testRequantizedDWConv" + L1: [2561] + - name: "iSoftmax" + L1: [800, 500, 300] + - name: "testConcat" + L1: [32000, 16000, 8000] + - name: "testRMSNorm" + L1: [2048, 1024, 512] + - name: "Hardswish" + L1: [750] + - name: "RQHardswish" + L1: [750] + - name: "testFloatGEMM" + L1: [8000] + - name: "testFloat2DConvolution" + L1: [1600] + - name: "testFloat2DConvolutionBias" + L1: [6600] + - name: "testFloat2DConvolutionZeroBias" + L1: [6600] + - name: "testFloat2DDWConvolution" + L1: [7200] + - name: "testFloat2DDWConvolutionBias" + L1: [7200] + - name: "testFloat2DDWConvolutionZeroBias" + L1: [7200] + - name: "testFloatLayerNorm" + L1: [2000] + - name: "testFloatMaxPool" + L1: [2000] + - name: "testFloatMatmul" + L1: [2000] + - name: "testFloatRelu" + L1: [2000] + - name: "testFloatReshapeWithSkipConnection" + L1: [1400] + - name: "testFloatSoftmax" + L1: [4000] + - name: "testFloatTranspose" + L1: [2000] + - name: "testFloatMul" + L1: [2000] + - name: "largeFloatAdd" + L1: [220000] + - name: "testRQGEMMwBatch" + L1: [20000] + - name: "testMatMulBatch" + L1: [20000] + uses: ./.github/workflows/_runner-gap9-tiled.yml + with: + runner: ${{ needs.select-env.outputs.runner }} + docker-image: ${{ needs.select-env.outputs.image }} + test-name: ${{ matrix.test-data.name }} + num-cores: 8 + L1: ${{ toJson(matrix.test-data.L1) }} + + gap9-kernels-tiled-doublebuffer-L2: + needs: select-env + strategy: + fail-fast: false + matrix: + test-data: + - name: "testMatMul" + L1: [64000, 32000, 16000] + - name: "test2DRequantizedConv" + L1: [8000, 6000, 5000] + - name: "testRequantizedDWConv" + L1: [5121] + - name: "iSoftmax" + L1: [1600, 1000, 600] + - name: "testConcat" + L1: [64000, 32000, 16000] + - name: "testRMSNorm" + L1: [4096, 2048, 1024] + - name: "Hardswish" + L1: [750] + - name: "RQHardswish" + L1: [800] + - name: "testFloatGEMM" + L1: [8000] + - name: "testFloat2DConvolution" + L1: [2000] + - name: "testFloat2DConvolutionBias" + L1: [8800] + - name: "testFloat2DConvolutionZeroBias" + L1: [8800] + - name: "testFloat2DDWConvolution" + L1: [9800] + - name: "testFloat2DDWConvolutionBias" + L1: [10000] + - name: "testFloat2DDWConvolutionZeroBias" + L1: [9800] + - name: "testFloatLayerNorm" + L1: [2000] + - name: "testFloatMaxPool" + L1: [5000] + - name: "testFloatMatmul" + L1: [5000] + - name: "testFloatRelu" + L1: [20] + - name: "testFloatReshapeWithSkipConnection" + L1: [2600] + - name: "testFloatSoftmax" + L1: [8000] + - name: "testFloatTranspose" + L1: [2000] + - name: "testFloatMul" + L1: [2000] + uses: ./.github/workflows/_runner-gap9-tiled.yml + with: + runner: ${{ needs.select-env.outputs.runner }} + docker-image: ${{ needs.select-env.outputs.image }} + test-name: ${{ matrix.test-data.name }} + num-cores: 8 + L1: ${{ toJson(matrix.test-data.L1) }} + double-buffer: true + + gap9-models-tiled-singlebuffer-L2: + needs: select-env + strategy: + fail-fast: false + matrix: + test-data: + - name: "simpleRegression" + L1: [45000, 30000, 15000] + - name: "miniMobileNet" + L1: [60000, 12000, 6000, 3000] + - name: "miniMobileNetv2" + L1: [60000, 16000, 12000, 8000] + - name: "Attention" + L1: [60000, 10000, 5000] + - name: "MLPerf/KeywordSpotting" + L1: [64000] + - name: "MLPerf/ImageClassification" + L1: [64000] + - name: "MLPerf/AnomalyDetection" + L1: [64000] + num-cores: [8] + uses: ./.github/workflows/_runner-gap9-tiled.yml + with: + runner: ${{ needs.select-env.outputs.runner }} + docker-image: ${{ needs.select-env.outputs.image }} + test-name: ${{ matrix.test-data.name }} + num-cores: ${{ matrix.num-cores }} + L1: ${{ toJson(matrix.test-data.L1) }} + + gap9-models-tiled-doublebuffer-L2: + needs: select-env + strategy: + fail-fast: false + matrix: + test-data: + - name: "simpleRegression" + L1: [60000, 45000, 30000] + - name: "miniMobileNet" + L1: [60000, 24000, 12000, 6000] + - name: "miniMobileNetv2" + L1: [60000, 32000, 24000, 16000] + - name: "Attention" + L1: [60000, 20000, 10000, 5000] + num-cores: [8] + double-buffer: [true] + uses: ./.github/workflows/_runner-gap9-tiled.yml + with: + runner: ${{ needs.select-env.outputs.runner }} + docker-image: ${{ needs.select-env.outputs.image }} + test-name: ${{ matrix.test-data.name }} + num-cores: ${{ matrix.num-cores }} + L1: ${{ toJson(matrix.test-data.L1) }} + double-buffer: ${{ matrix.double-buffer }} diff --git a/.github/workflows/ci-platform-gap9.yml b/.github/workflows/ci-platform-gap9.yml new file mode 100644 index 0000000000..29440bed7f --- /dev/null +++ b/.github/workflows/ci-platform-gap9.yml @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +--- +name: CI • GAP9 + +"on": + push: + branches: + - "**" + tags: + - "v*.*.*" + pull_request: + workflow_dispatch: + inputs: + docker_image_deeploy: + description: "Deeploy Image to use" + required: false + default: "ghcr.io/pulp-platform/deeploy:devel" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + select-env: + uses: ./.github/workflows/_select-env.yml + with: + docker_image_deeploy: ${{ inputs.docker_image_deeploy }} + + gap9-kernels: + needs: select-env + uses: ./.github/workflows/_runner-gap9.yml + with: + runner: ${{ needs.select-env.outputs.runner }} + docker-image: ${{ needs.select-env.outputs.image }} + test-names: | + Adder + MultIO + test1DPad + test2DPad + testMatMul + testMatMulAdd + testRequantizedDWConv + test2DRequantizedConv + iSoftmax + testConcat + testRMSNorm + trueIntegerDivSandwich + Hardswish + RQHardswish + testBacktracking + testFloatAdder + testFloatGEMM + + testFloat2DConvolution + testFloat2DConvolutionBias + testFloat2DConvolutionZeroBias + + testFloat2DDWConvolution + testFloat2DDWConvolutionBias + testFloat2DDWConvolutionZeroBias + + testFloatLayerNorm + testFloatRelu + testFloatMaxPool + testFloatMatmul + testFloatSoftmax + testFloatTranspose + testFloatMul + Quant + Dequant + testFloatReduceSum + testFloatReshapeWithSkipConnection + QuantizedLinear + num-cores: 8 + + gap9-models: + needs: select-env + uses: ./.github/workflows/_runner-gap9.yml + with: + runner: ${{ needs.select-env.outputs.runner }} + docker-image: ${{ needs.select-env.outputs.image }} + test-names: | + simpleRegression + miniMobileNet + miniMobileNetv2 + Attention + MLPerf/KeywordSpotting + MLPerf/ImageClassification + MLPerf/AnomalyDetection + num-cores: 8 From 584729c9ead3ce4806b1d6d01d008659221d5867 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:34:04 +0000 Subject: [PATCH 16/23] [GAP9] Fix L2 GVSoC target build with hexlist --- DeeployTest/CMakeLists.txt | 15 +++++++++++---- DeeployTest/testUtils/codeGenerate.py | 6 ++++++ cmake/gap9/gap9_gvsoc.cmake | 24 ++++++++++++------------ 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/DeeployTest/CMakeLists.txt b/DeeployTest/CMakeLists.txt index 0bdd94c9b3..1fbfc8360b 100644 --- a/DeeployTest/CMakeLists.txt +++ b/DeeployTest/CMakeLists.txt @@ -52,18 +52,25 @@ elseif(DEEPLOY_ARCH STREQUAL CHIMERA) add_subdirectory(Platforms/Chimera) elseif(platform STREQUAL GAP9) + # Search for hex files generated by Python code generator + # These files indicate L3 mode (external memory with readfs) file(GLOB_RECURSE HEXLIST - "${GENERATED_SOURCE}/hex/**" + "${GENERATED_SOURCE}/hex/*" ) - list(APPEND GVSOC_EXTRA_FLAGS --target-property=boot.flash_device=mram --target-property=boot.mode=flash) - if (NOT HEXLIST) + # L2 mode: No flash/readfs files + # Data lives in L2 memory only target_compile_options(network PUBLIC -DNOFLASH) + message(STATUS "[Deeploy GAP9] L2 mode: No hex files found, -DNOFLASH set") + message(STATUS "[Deeploy GAP9] If you expect L3 mode, ensure Python codegen created hex files in ${GENERATED_SOURCE}/hex/") else() + # L3 mode: Use flash with readfs files + # Data will be loaded from external flash via readfs + message(STATUS "[Deeploy GAP9] L3 mode: Found ${CMAKE_MATCH_COUNT} hex file(s)") message(STATUS "==== HEXLIST ====") foreach(f ${HEXLIST}) - message(STATUS "HEXLIST file: ${f}") + message(STATUS " ${f}") endforeach() gvsoc_flags_add_files_to_flash(GAPY_RUNNER_ARGS HEXLIST) message(STATUS "GAPY_RUNNER_ARGS: ${GAPY_RUNNER_ARGS}") diff --git a/DeeployTest/testUtils/codeGenerate.py b/DeeployTest/testUtils/codeGenerate.py index 370d138a5a..7df8451aa1 100644 --- a/DeeployTest/testUtils/codeGenerate.py +++ b/DeeployTest/testUtils/codeGenerate.py @@ -265,6 +265,12 @@ def generateTestNetwork(deployer: NetworkDeployer, test_inputs: List[np.ndarray] # Create input and output vectors os.makedirs(dumpdir, exist_ok = True) + # Clean up old hex files to avoid confusion between L2/L3 modes + import shutil + hex_dir = os.path.join(dumpdir, 'hex') + if os.path.exists(hex_dir): + shutil.rmtree(hex_dir) + testInputStr = generateTestInputsHeader(deployer, test_inputs) with open(f'{dumpdir}/testinputs.h', "w") as f: f.write(testInputStr) diff --git a/cmake/gap9/gap9_gvsoc.cmake b/cmake/gap9/gap9_gvsoc.cmake index 1c62aab5bd..2a5029925c 100644 --- a/cmake/gap9/gap9_gvsoc.cmake +++ b/cmake/gap9/gap9_gvsoc.cmake @@ -20,8 +20,8 @@ macro(add_gvsoc_emulation name target) message(FATAL_ERROR "Environment variable GAP_SDK_HOME not set") endif() - # Check if GAPY_RUNNER_ARGS is defined (indicates L3 with readfs files) - if(DEFINED GAPY_RUNNER_ARGS) + # Check if GAPY_RUNNER_ARGS is defined and non-empty (indicates L3 with readfs files) + if(GAPY_RUNNER_ARGS) # L3 mode: Use gapy with flash layout and readfs message(STATUS "[Deeploy GAP9] L3 mode: using gapy with readfs") @@ -86,29 +86,29 @@ macro(add_gvsoc_emulation name target) ) else() - # L2 mode: Use traditional gvsoc command directly - message(STATUS "[Deeploy GAP9] L2 mode: using traditional gvsoc") - + # L2 mode: Use traditional gvsoc command directly (no flash/readfs) + message(STATUS "[Deeploy GAP9] L2 mode: using traditional gvsoc without flash") + set(GVSOC_EXECUTABLE "${GVSOC_INSTALL_DIR}/bin/gvsoc") - + + # L2 mode: run directly without flash operations set(GVSOC_CMD ${GVSOC_EXECUTABLE} --target=${target} --binary ${GVSOC_BINARY} --work-dir=${GVSOC_WORKDIR} - ${GVSOC_EXTRA_FLAGS} - image flash run + run ) - + # Convert list to string for printing string(REPLACE ";" " " GVSOC_CMD_STR "${GVSOC_CMD}") - + add_custom_target(gvsoc_${name} DEPENDS ${name} WORKING_DIRECTORY ${GVSOC_WORKDIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ || true + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ || true COMMAND ${CMAKE_COMMAND} -E echo "==========================================" - COMMAND ${CMAKE_COMMAND} -E echo "[Deeploy GAP9] Executing gvsoc command (L2 mode):" + COMMAND ${CMAKE_COMMAND} -E echo "[Deeploy GAP9] Executing gvsoc command - L2 mode:" COMMAND ${CMAKE_COMMAND} -E echo "${GVSOC_CMD_STR}" COMMAND ${CMAKE_COMMAND} -E echo "==========================================" COMMAND ${GVSOC_CMD} From 3e2fc8798cab87ef183d9b6a06454e216290ba13 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:34:38 +0000 Subject: [PATCH 17/23] [GAP9] Sdk.config add macro for clusterstack --- DeeployTest/Platforms/GAP9/sdk.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DeeployTest/Platforms/GAP9/sdk.config b/DeeployTest/Platforms/GAP9/sdk.config index c0b2bdf2e8..d4e4db6565 100644 --- a/DeeployTest/Platforms/GAP9/sdk.config +++ b/DeeployTest/Platforms/GAP9/sdk.config @@ -27,4 +27,7 @@ CONFIG_IO_PRINTF_FLOAT_ENABLE=y CONFIG_IO_PRINTF_FLOAT_EXPONENT_ENABLE=y CONFIG_PLATFORM_GVSOC=y -# CONFIG_DRIVER_CLUSTERDECOMPRESSOR=n \ No newline at end of file +# CONFIG_DRIVER_CLUSTERDECOMPRESSOR=n + +#CONFIG_CL_MASTER_CORE_STACK_SIZE=14000 +#CONFIG_CL_SLAVE_CORE_STACK_SIZE=1000 \ No newline at end of file From 6b55e98b5ae670c3e56cfddfd3653372141058f0 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sun, 30 Nov 2025 19:54:42 +0000 Subject: [PATCH 18/23] [GAP9] Fix Cluster DMA Concurrent Tasks Bug with Mchan Template from Dory --- Deeploy/Targets/GAP9/Bindings.py | 6 +- Deeploy/Targets/GAP9/DMA/ClDma.py | 85 ------------------- Deeploy/Targets/GAP9/DMA/MchanDma.py | 105 ++++++++++++++++++++++++ Deeploy/Targets/GAP9/DMA/__init__.py | 3 - Deeploy/Targets/GAP9/Platform.py | 3 +- TargetLibraries/GAP9/inc/DeeployMchan.h | 44 ++++++++++ 6 files changed, 154 insertions(+), 92 deletions(-) delete mode 100644 Deeploy/Targets/GAP9/DMA/ClDma.py create mode 100644 Deeploy/Targets/GAP9/DMA/MchanDma.py delete mode 100644 Deeploy/Targets/GAP9/DMA/__init__.py create mode 100644 TargetLibraries/GAP9/inc/DeeployMchan.h diff --git a/Deeploy/Targets/GAP9/Bindings.py b/Deeploy/Targets/GAP9/Bindings.py index 68a4c9d60b..73cc1ce03f 100644 --- a/Deeploy/Targets/GAP9/Bindings.py +++ b/Deeploy/Targets/GAP9/Bindings.py @@ -28,7 +28,7 @@ from Deeploy.Targets.PULPOpen.Bindings import TilingCallClosure, ForkClosure, \ MemoryAwareFunctionCallClosure, L3MemoryAwareFunctionCallClosure, MemoryAwareForkTransformer from Deeploy.Targets.PULPOpen.DataTypes import PULPDMAFuture -from Deeploy.Targets.GAP9.DMA.ClDma import ClDma +from Deeploy.Targets.GAP9.DMA.MchanDma import GAP9MchanDma from Deeploy.Targets.GAP9.DMA.L3Dma import gap9L3DmaHack # Import templates from PULPOpen and Generic @@ -55,7 +55,7 @@ PULPSynchCoresPass(), ForkClosure(writeback = False, generateStruct = True), TilingVariableReplacementUpdate("L1"), - PULPClusterTiling("L2", "L1", ClDma()), # Use ClDma instead of MchanDma + PULPClusterTiling("L2", "L1", GAP9MchanDma()), # Use GAP9MchanDma instead of ClDma ArgumentStructGeneration(), MemoryManagementGeneration("L1"), TilingVariableReplacement("L2"), @@ -74,7 +74,7 @@ TilingVariableReplacement("L1"), TilingCallClosure(writeback = False, generateStruct = True), TilingVariableReplacementUpdate("L1"), - PULPClusterTiling("L2", "L1", ClDma()), # Use ClDma instead of MchanDma + PULPClusterTiling("L2", "L1", GAP9MchanDma()), # Use GAP9MchanDma instead of ClDma ArgumentStructGeneration(), MemoryManagementGeneration("L1"), TilingVariableReplacement("L2"), diff --git a/Deeploy/Targets/GAP9/DMA/ClDma.py b/Deeploy/Targets/GAP9/DMA/ClDma.py deleted file mode 100644 index b96796affa..0000000000 --- a/Deeploy/Targets/GAP9/DMA/ClDma.py +++ /dev/null @@ -1,85 +0,0 @@ -# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna -# -# SPDX-License-Identifier: Apache-2.0 - -import math -from typing import Dict, Tuple - -from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation, VariableBuffer -from Deeploy.TilingExtension.AsyncDma import AsyncDma, PerTensorWaitingStrategy, DmaDirection, Future - - -class ClDmaFuture(Future): - """ - Future implementation for GAP9's cl_dma.h API. - Uses pi_cl_dma_cmd_t structure to track DMA transfers. - """ - - _initTemplate = NodeTemplate("pi_cl_dma_cmd_t ${name};") - - _deinitTemplate = NodeTemplate("") - - _allocTemplate = NodeTemplate("") # SDK handles allocation automatically - - _waitTemplate = NodeTemplate("pi_cl_dma_cmd_wait(&${name});") - - -class ClDma(AsyncDma): - """ - GAP9 Cluster DMA implementation using cl_dma.h high-level API. - - This uses the PMSIS standard API (pi_cl_dma_cmd) instead of low-level MCHAN. - Benefits: - - Higher abstraction level - - Better portability - - Automatic resource management - - Cleaner API - """ - - _transferTemplates = { - 1: NodeTemplate("pi_cl_dma_cmd(${ext}, ${loc}, ${size}, ${dir}, &${future});"), - 2: NodeTemplate("pi_cl_dma_cmd_2d(${ext}, ${loc}, ${size}, ${stride}, ${length}, ${dir}, &${future});"), - } - _waitingStrategy = PerTensorWaitingStrategy(ClDmaFuture) - - def __init__(self, transferTemplates: Dict[int, NodeTemplate] = _transferTemplates) -> None: - super().__init__(transferTemplates) - - def checkTransfer(self, ctxt: NetworkContext, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, - shape: Tuple[int, ...], strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], - direction: DmaDirection) -> None: - super().checkTransfer(ctxt, externalBuffer, localBuffer, shape, strideExt, strideLoc, direction) - - transferRank = len(shape) - # GAP9 cl_dma requires contiguous transfers for innermost dimension - assert strideExt[ - -1] == 1, "GAP9 cl_dma supports only contiguous transfers of the innermost dimension for external memory" - if transferRank == 1: - assert strideLoc[0] == 1, "GAP9 cl_dma supports only contiguous transfers for local memory" - else: - assert strideLoc[0] == shape[1] and strideLoc[ - 1] == 1, "GAP9 cl_dma supports only contiguous transfers for local memory" - - def transferOpRepr(self, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, shape: Tuple[int, ...], - strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], direction: DmaDirection, - future: Future) -> OperatorRepresentation: - operatorRepresentation = super().transferOpRepr(externalBuffer, localBuffer, shape, strideExt, strideLoc, - direction, future) - - transferRank = len(shape) - - # Use cl_dma API direction enum: PI_CL_DMA_DIR_EXT2LOC (1) or PI_CL_DMA_DIR_LOC2EXT (0) - operatorRepresentation["dir"] = "PI_CL_DMA_DIR_EXT2LOC" if direction == "ExternalToLocal" else "PI_CL_DMA_DIR_LOC2EXT" - - # Total transfer size in bytes (shape already contains byte counts from the framework) - transferSize = math.prod(shape) - operatorRepresentation["size"] = transferSize - - # For 2D transfers, add stride and length parameters (already in bytes) - if transferRank == 2: - # stride: bytes to add to go to next line (row stride in external memory) - operatorRepresentation["stride"] = strideExt[0] - # length: bytes per line (number of bytes after which DMA switches to next line) - operatorRepresentation["length"] = shape[1] - - return operatorRepresentation diff --git a/Deeploy/Targets/GAP9/DMA/MchanDma.py b/Deeploy/Targets/GAP9/DMA/MchanDma.py new file mode 100644 index 0000000000..eec611c986 --- /dev/null +++ b/Deeploy/Targets/GAP9/DMA/MchanDma.py @@ -0,0 +1,105 @@ +# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna +# +# SPDX-License-Identifier: Apache-2.0 + +import math +from typing import Dict, Tuple + +from Deeploy.DeeployTypes import NetworkContext, NodeTemplate, OperatorRepresentation, VariableBuffer +from Deeploy.TilingExtension.AsyncDma import AsyncDma, DirectionWaitingStrategy, DmaDirection, Future + + +class MchanTransferFuture(Future): + """ + Future implementation for GAP9's MCHAN v7 low-level API. + Based on DORY's implementation: https://github.com/pulp-platform/dory + + Uses direct hardware register access for maximum performance. + """ + + _initTemplate = NodeTemplate("int ${name} = -1;") + + _deinitTemplate = NodeTemplate("") + + _allocTemplate = NodeTemplate("${name} = mchan_transfer_get_id();") + + _waitTemplate = NodeTemplate(""" +if (${name} >= 0) { + mchan_transfer_wait(${name}); + mchan_transfer_free(${name}); +} +""") + + +class GAP9MchanDma(AsyncDma): + """ + GAP9 Cluster DMA implementation using MCHAN v7 low-level API. + + This implementation follows DORY's approach for GAP9: + - Direct hardware register access for MCHAN v7 + - Manual transfer ID management + - Support for 1D, 2D, and 3D transfers + - Event-based or polled synchronization + + References: + - DORY GAP9: https://github.com/pulp-platform/dory/tree/master/dory/Hardware_targets/PULP/GAP9 + - MCHAN v7 specification in GAP9 documentation + """ + + _transferTemplates = { + 1: NodeTemplate("{ mchan_transfer_t __mchan_tmp = { .cmd = ${cmd}, .size = ${size}, .loc = ${loc}, .ext = ${ext} }; mchan_transfer_push_1d(__mchan_tmp); }"), + 2: NodeTemplate("{ mchan_transfer_t __mchan_tmp = { .cmd = ${cmd}, .size = ${size}, .loc = ${loc}, .ext = ${ext}, .ext_size_1d = ${size_1d}, .ext_stride_1d = ${stride_2d} }; mchan_transfer_push_2d(__mchan_tmp); }"), + } + _waitingStrategy = DirectionWaitingStrategy(MchanTransferFuture, "transfer") + + def __init__(self, transferTemplates: Dict[int, NodeTemplate] = _transferTemplates) -> None: + super().__init__(transferTemplates) + + def checkTransfer(self, ctxt: NetworkContext, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, + shape: Tuple[int, ...], strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], + direction: DmaDirection) -> None: + super().checkTransfer(ctxt, externalBuffer, localBuffer, shape, strideExt, strideLoc, direction) + + transferRank = len(shape) + # MCHAN v7 requires contiguous transfers for innermost dimension in external memory + assert strideExt[ + -1] == 1, "GAP9 MCHAN supports only contiguous transfers of the innermost dimension for external memory" + + # Local memory (TCDM) must also be contiguous + if transferRank == 1: + assert strideLoc[0] == 1, "GAP9 MCHAN supports only contiguous transfers for local memory" + else: + assert strideLoc[0] == shape[1] and strideLoc[ + 1] == 1, "GAP9 MCHAN supports only contiguous transfers for local memory" + + def transferOpRepr(self, externalBuffer: VariableBuffer, localBuffer: VariableBuffer, shape: Tuple[int, ...], + strideExt: Tuple[int, ...], strideLoc: Tuple[int, ...], direction: DmaDirection, + future: Future) -> OperatorRepresentation: + operatorRepresentation = super().transferOpRepr(externalBuffer, localBuffer, shape, strideExt, strideLoc, + direction, future) + + transferRank = len(shape) + + # Build MCHAN command using flags from mchan.h + # We construct the cmd value in Python and let the C code use the macros + mchanFlags = 0 + mchanFlags += (1 << 0) if direction == "ExternalToLocal" else 0 # direction + mchanFlags += (1 << 1) # increment addresses + mchanFlags += (1 << 2) if transferRank == 2 else 0 # 2d transfer + mchanFlags += (1 << 3) # event enable + + mchanTransferSize = math.prod(shape) + mchanTransferSizeBits = math.ceil(math.log2(mchanTransferSize)) if mchanTransferSize > 0 else 0 + assert mchanTransferSizeBits <= 17, ( + "The transfer size is not representable with 17 bits. " + f"Received transfer size {mchanTransferSize} that requires {mchanTransferSizeBits} bits") + + # cmd = (flags << 17) + size, matching PULPOpen MchanDma pattern + operatorRepresentation["cmd"] = (mchanFlags << 17) + mchanTransferSize + operatorRepresentation["size"] = mchanTransferSize + + if transferRank == 2: + operatorRepresentation["size_1d"] = shape[1] + operatorRepresentation["stride_2d"] = strideExt[0] + + return operatorRepresentation diff --git a/Deeploy/Targets/GAP9/DMA/__init__.py b/Deeploy/Targets/GAP9/DMA/__init__.py deleted file mode 100644 index 4694b67df5..0000000000 --- a/Deeploy/Targets/GAP9/DMA/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna -# -# SPDX-License-Identifier: Apache-2.0 diff --git a/Deeploy/Targets/GAP9/Platform.py b/Deeploy/Targets/GAP9/Platform.py index 697b8010ba..147fc50484 100644 --- a/Deeploy/Targets/GAP9/Platform.py +++ b/Deeploy/Targets/GAP9/Platform.py @@ -232,7 +232,8 @@ class GAP9StructBuffer(StructBuffer): _includeList = [ "pmsis.h", "DeeployGAP9Math.h", - "pulp_nn_kernels.h" + "pulp_nn_kernels.h", + "DeeployMchan.h" ] diff --git a/TargetLibraries/GAP9/inc/DeeployMchan.h b/TargetLibraries/GAP9/inc/DeeployMchan.h new file mode 100644 index 0000000000..f4822070fc --- /dev/null +++ b/TargetLibraries/GAP9/inc/DeeployMchan.h @@ -0,0 +1,44 @@ +/* + * SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _DEEPLOY_MCHAN_H +#define _DEEPLOY_MCHAN_H + +/* + * GAP9 MCHAN v7 configuration wrapper for Deeploy + * + * This header configures and includes mchan.h with proper GAP9-specific settings. + * Based on DORY's GAP9 DMA implementation. + */ + +#include "pmsis.h" + +// Define MCHAN base address if not already defined +#ifndef MCHAN_BASE_ADDR +#define MCHAN_BASE_ADDR (CLUSTER_PERIPHERALS_ADDR + CLUSTER_MCHAN_OFFSET) +#endif + +// Define MCHAN version (GAP9 uses v7) +#ifndef MCHAN_VERSION +#define MCHAN_VERSION 7 +#endif + +// Use event-based synchronization (recommended for GAP9) +#ifndef MCHAN_POLLED +#define MCHAN_EVENT +#endif + +// Define event bit for cluster DMA +#ifdef MCHAN_EVENT +#ifndef MCHAN_EVENT_BIT +#define MCHAN_EVENT_BIT (CLUSTER_IRQ_DMA0) // Typically 8 +#endif +#endif + +// Now include the mchan.h header with all configurations set +#include "mchan.h" + +#endif // _DEEPLOY_MCHAN_H From ccaad61e63aedcf84c108666cdf4ffeab98d8d7e Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sun, 30 Nov 2025 20:01:12 +0000 Subject: [PATCH 19/23] [GAP9] Fix free template from PULP-sdk to GAP9sdk --- Deeploy/Targets/GAP9/Templates/FreeTemplate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Deeploy/Targets/GAP9/Templates/FreeTemplate.py b/Deeploy/Targets/GAP9/Templates/FreeTemplate.py index 185b330b16..9604b5f951 100644 --- a/Deeploy/Targets/GAP9/Templates/FreeTemplate.py +++ b/Deeploy/Targets/GAP9/Templates/FreeTemplate.py @@ -6,12 +6,12 @@ gap9L2LocalTemplate = NodeTemplate("pi_l2_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});") gap9L2GlobalTemplate = NodeTemplate("pi_l2_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});") -gap9L1FreeTemplate = NodeTemplate("pi_l1_malloc_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});\n") +gap9L1FreeTemplate = NodeTemplate("pi_l1_free(${name}, sizeof(${type.referencedType.typeName}) * ${size});\n") gap9L1GlobalFreeTemplate = NodeTemplate("") gap9GenericFree = NodeTemplate(""" % if _memoryLevel == "L1": -pi_l1_malloc_free(${name}, sizeof(${type.referencedType.typeName}) * ${size}); +pi_l1_free(${name}, sizeof(${type.referencedType.typeName}) * ${size}); % elif _memoryLevel == "L2" or _memoryLevel is None: pi_l2_free(${name}, sizeof(${type.referencedType.typeName}) * ${size}); % elif _memoryLevel == "L3": From af01a2e208c8ff7b7e4f5cde90857de89306d8f4 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sun, 30 Nov 2025 20:53:29 +0000 Subject: [PATCH 20/23] [GAP9] Fix duplicate L3 Alloc Code generation due to PULP inheritance issueFix duplicate template generation due to PULP inheritance issue --- Deeploy/Targets/GAP9/Deployer.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Deeploy/Targets/GAP9/Deployer.py b/Deeploy/Targets/GAP9/Deployer.py index 529e80a694..13aaaca4cf 100644 --- a/Deeploy/Targets/GAP9/Deployer.py +++ b/Deeploy/Targets/GAP9/Deployer.py @@ -15,6 +15,7 @@ import onnx_graphsurgeon as gs from Deeploy.AbstractDataTypes import Pointer +from Deeploy.CommonExtensions.NetworkDeployers.SignPropDeployer import SignPropDeployer from Deeploy.DeeployTypes import ConstantBuffer, DeploymentPlatform, NodeTemplate, TopologyOptimizer, VariableBuffer from Deeploy.Targets.PULPOpen.Deployer import PULPDeployer from Deeploy.Targets.GAP9.Bindings import GAP9Transformer, GAP9ClusterTransformer, GAP9SimpleTransformer @@ -68,15 +69,7 @@ def __init__(self, self.SimpleTransformer = GAP9SimpleTransformer def generateBufferAllocationCode(self) -> str: - """ - Generate buffer allocation code with GAP9-specific L3 RAM support. - - For L3 buffers: - 1. Allocate space in APS256XXN OctaSPI RAM using cl_ram_malloc() - 2. Load data from ReadFS using load_file_to_ram() - 3. Assign extName to enable hex dump generation - """ - retStr = super().generateBufferAllocationCode() + retStr = SignPropDeployer.generateBufferAllocationCode(self) L3FileStr = "" globalConstBuffers = [ From 71896e72c899956ef691ba9bb6cf420a952617d0 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Sun, 30 Nov 2025 21:40:27 +0000 Subject: [PATCH 21/23] [GAP9] Change GAP9 DWConV Based on PULP change --- Deeploy/Targets/GAP9/Tiler.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Deeploy/Targets/GAP9/Tiler.py b/Deeploy/Targets/GAP9/Tiler.py index 73d3958ae9..32676df5e6 100644 --- a/Deeploy/Targets/GAP9/Tiler.py +++ b/Deeploy/Targets/GAP9/Tiler.py @@ -54,9 +54,11 @@ GAP9SoftmaxGradBindings, GAP9TransposeBindings, GAP9UniformRQSBindings, + GAP9FloatDWConv2DBindings ) from Deeploy.Targets.PULPOpen.TileConstraints.ConvTileConstraint import Conv2DTileConstraint, RQConv2DTileConstraint -from Deeploy.Targets.PULPOpen.TileConstraints.DWConvTileConstraint import DWConv2DTileConstraint +from Deeploy.Targets.PULPOpen.TileConstraints.DWConvTileConstraint import DWConv2DTileConstraint, \ + RQDWConv2DTileConstraint from Deeploy.Targets.PULPOpen.TileConstraints.GatherTileConstraint import GatherTileConstraint from Deeploy.Targets.PULPOpen.TileConstraints.GEMMTileConstraint import FloatGEMMTileConstraint, GEMMTileConstraint from Deeploy.Targets.PULPOpen.TileConstraints.iSoftmaxTileConstraint import iSoftmaxTileConstraint @@ -74,11 +76,14 @@ tileConstraint = RQConv2DTileConstraint()) GAP9RQSDWConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSDWConv2DBindings, - tileConstraint = DWConv2DTileConstraint()) + tileConstraint = RQDWConv2DTileConstraint()) GAP9Conv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9FloatConv2DBindings, tileConstraint = Conv2DTileConstraint()) +GAP9DWConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9FloatDWConv2DBindings, + tileConstraint = DWConv2DTileConstraint()) + GAP9RQSGEMMTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = GAP9RQSGEMMBindings, tileConstraint = GEMMTileConstraint()) From f88d5c5e2d9c66df67186f109b00e90d899bf745 Mon Sep 17 00:00:00 2001 From: Run Wang <52746141+SamanthaWangdl@users.noreply.github.com> Date: Tue, 16 Dec 2025 15:30:53 +0000 Subject: [PATCH 22/23] [GAP-CI] Update runner-gap9.yml --- .github/workflows/_runner-gap9.yml | 17 +++++++++++++---- .github/workflows/_select-env.yml | 13 ++----------- .github/workflows/ci-deeploy.yml | 4 ++-- DeeployTest/testUtils/codeGenerate.py | 2 +- TargetLibraries/GAP9/CMakeLists.txt | 11 +++++++++++ cmake/gap9/gap9_gvsoc.cmake | 7 +++++-- 6 files changed, 34 insertions(+), 20 deletions(-) diff --git a/.github/workflows/_runner-gap9.yml b/.github/workflows/_runner-gap9.yml index d55046e227..82dfb4d475 100644 --- a/.github/workflows/_runner-gap9.yml +++ b/.github/workflows/_runner-gap9.yml @@ -33,22 +33,31 @@ jobs: submodules: recursive - name: Build Deeploy shell: bash - run: pip install -e . + run: | + source /app/install/gap9-sdk/.gap9-venv/bin/activate + source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true + pip install -e . || true + deactivate - name: Cache ccache uses: actions/cache/restore@v4 with: path: /app/.ccache - key: ccache-ci + key: ccache-ci - name: Run Test run: | testNames="${{ inputs.test-names }}" + source /app/install/gap9-sdk/.gap9-venv/bin/activate + source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true + export GVSOC_INSTALL_DIR=/app/install/gap9-sdk/install/workstation + export GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 cd DeeployTest mkdir -p /app/.ccache export CCACHE_DIR=/app/.ccache echo "$testNames" | while IFS= read -r testName; do if [[ -n "$testName" ]]; then echo "Running test: $testName" - python testRunner_gap9.py -t Tests/$testName --cores=${{ inputs.num-cores }} + python testRunner_gap9.py -t Tests/$testName fi done - shell: bash + deactivate + shell: bash \ No newline at end of file diff --git a/.github/workflows/_select-env.yml b/.github/workflows/_select-env.yml index 1085c7eaa1..2fd615532b 100644 --- a/.github/workflows/_select-env.yml +++ b/.github/workflows/_select-env.yml @@ -26,16 +26,7 @@ jobs: - id: set-docker-image shell: bash run: | - if [[ -n "${{ inputs.docker_image_deeploy }}" ]]; then - IMAGE="${{ inputs.docker_image_deeploy }}" - elif [[ "${{ github.ref }}" == refs/tags/* ]]; then - TAG_NAME="${GITHUB_REF##refs/tags/}" - IMAGE="ghcr.io/pulp-platform/deeploy:${TAG_NAME}" - elif [[ "${{ github.ref_name }}" == "main" ]]; then - IMAGE="ghcr.io/pulp-platform/deeploy:main" - else - IMAGE="ghcr.io/pulp-platform/deeploy:devel" - fi + IMAGE="ghcr.io/runwangdl/deeploy:gap9" echo "image=${IMAGE}" >> "$GITHUB_OUTPUT" - id: set-runner @@ -45,4 +36,4 @@ jobs: echo "runner=self-hosted" >> "$GITHUB_OUTPUT" else echo "runner=ubuntu-latest" >> "$GITHUB_OUTPUT" - fi + fi \ No newline at end of file diff --git a/.github/workflows/ci-deeploy.yml b/.github/workflows/ci-deeploy.yml index 429e9c2027..dd50bdb9a5 100644 --- a/.github/workflows/ci-deeploy.yml +++ b/.github/workflows/ci-deeploy.yml @@ -17,7 +17,7 @@ name: CI • Deeploy docker_image_deeploy: description: "Deeploy Image to use" required: false - default: "ghcr.io/pulp-platform/deeploy:devel" + default: "ghcr.io/runwangdl/deeploy:gap9" concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -235,4 +235,4 @@ jobs: shell: bash run: | cd DeeployTest - python testDmas.py + python testDmas.py \ No newline at end of file diff --git a/DeeployTest/testUtils/codeGenerate.py b/DeeployTest/testUtils/codeGenerate.py index 62f2d889ae..ff4f7757f4 100644 --- a/DeeployTest/testUtils/codeGenerate.py +++ b/DeeployTest/testUtils/codeGenerate.py @@ -192,7 +192,7 @@ def generateTestNetworkImplementation(deployer: NetworkDeployer, verbosityCfg: C void InitNetwork(__attribute__((unused)) uint32_t core_id, __attribute__((unused)) uint32_t numThreads){ #ifndef CI - printf("[%d %d] Init Network!\\n", pi_cluster_id(), pi_core_id()); + printf("Init Network!\\n"); #endif """ retStr += deployer.generateEngineInitializationCode() diff --git a/TargetLibraries/GAP9/CMakeLists.txt b/TargetLibraries/GAP9/CMakeLists.txt index 947096f6bf..f9c348a72c 100644 --- a/TargetLibraries/GAP9/CMakeLists.txt +++ b/TargetLibraries/GAP9/CMakeLists.txt @@ -42,11 +42,22 @@ target_link_libraries(deeploygap9 PUBLIC pmsis) set(PULPNNVERSION XPULPV2) set(PULPNNBITWIDTH 32) add_compile_definitions(NUM_CORES=${NUM_CORES}) + +# RW: Create symlink to PULPOpen third_party if it doesn't exist +if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/third_party) + file(CREATE_LINK + ${CMAKE_CURRENT_LIST_DIR}/../PULPOpen/third_party + ${CMAKE_CURRENT_LIST_DIR}/third_party + SYMBOLIC) + message(STATUS "[Deeploy GAP9] Created symlink: third_party -> ../PULPOpen/third_party") +endif() + add_subdirectory(third_party/pulp-nn-mixed) #RW: GCC not recognizing -Wno-typedef-redefinition defined in PULP-NN CMakelist target_compile_options(pulp-nn-mixed PRIVATE -Wno-error) target_link_libraries(deeploygap9 PUBLIC pulp-nn-mixed) +target_link_libraries(pulp-nn-mixed PUBLIC pmsis) target_link_libraries(deeploygap9 PUBLIC m) diff --git a/cmake/gap9/gap9_gvsoc.cmake b/cmake/gap9/gap9_gvsoc.cmake index 2a5029925c..51fea8de8e 100644 --- a/cmake/gap9/gap9_gvsoc.cmake +++ b/cmake/gap9/gap9_gvsoc.cmake @@ -97,7 +97,7 @@ macro(add_gvsoc_emulation name target) --target=${target} --binary ${GVSOC_BINARY} --work-dir=${GVSOC_WORKDIR} - run + image flash run ) # Convert list to string for printing @@ -106,7 +106,10 @@ macro(add_gvsoc_emulation name target) add_custom_target(gvsoc_${name} DEPENDS ${name} WORKING_DIRECTORY ${GVSOC_WORKDIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ || true + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/*.bin ${GVSOC_WORKDIR}/ || true + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${GAP9_SDK_HOME}/utils/efuse/GAP9/efuse_hyper_preload.data + ${GVSOC_WORKDIR}/chip.efuse_preload.data COMMAND ${CMAKE_COMMAND} -E echo "==========================================" COMMAND ${CMAKE_COMMAND} -E echo "[Deeploy GAP9] Executing gvsoc command - L2 mode:" COMMAND ${CMAKE_COMMAND} -E echo "${GVSOC_CMD_STR}" From 4429a6a69d85ea63e49c362a18cbfd690f0f87c5 Mon Sep 17 00:00:00 2001 From: runwangdl Date: Wed, 17 Dec 2025 02:23:05 +0100 Subject: [PATCH 23/23] [GAP-CI] Some CI Bugs fixed --- .github/workflows/_runner-gap9-tiled.yml | 32 +- .github/workflows/_runner-gap9.yml | 6 +- .github/workflows/ci-platform-gap9-tiled.yml | 6 - .github/workflows/ci-platform-gap9.yml | 1 - .github/workflows/infra-generate-ccache.yml | 9 + Container/Dockerfile.Gap9 | 45 + Container/Dockerfile.toolchain | 2 +- Deeploy/Targets/GAP9/Bindings.py | 28 +- Deeploy/Targets/GAP9/DMA/MchanDma.py | 40 +- Deeploy/Targets/GAP9/Deployer.py | 22 +- Deeploy/Targets/GAP9/Platform.py | 182 ++-- Deeploy/Targets/GAP9/Tiler.py | 43 +- Deeploy/Targets/PULPOpen/Deployer.py | 2 +- DeeployTest/Platforms/GAP9/CMakeLists.txt | 2 - DeeployTest/output.txt | 869 ------------------ TargetLibraries/GAP9/inc/DeeployMchan.h | 6 +- .../PULPOpen/inc/kernel/Layernorm.h | 3 +- TargetLibraries/PULPOpen/src/Layernorm.c | 3 +- 18 files changed, 220 insertions(+), 1081 deletions(-) create mode 100644 Container/Dockerfile.Gap9 delete mode 100644 DeeployTest/output.txt diff --git a/.github/workflows/_runner-gap9-tiled.yml b/.github/workflows/_runner-gap9-tiled.yml index 11f17b7537..f91b151aa1 100644 --- a/.github/workflows/_runner-gap9-tiled.yml +++ b/.github/workflows/_runner-gap9-tiled.yml @@ -58,21 +58,25 @@ jobs: submodules: recursive - name: Build Deeploy shell: bash - run: pip install -e . - - name: Cache ccache - uses: actions/cache/restore@v4 + run: | + source /app/install/gap9-sdk/.gap9-venv/bin/activate + source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true + pip install -e . || true + deactivate + - name: Setup ccache + uses: actions/cache@v4 with: path: /app/.ccache key: ccache-ci - name: Run Test - uses: nick-fields/retry@v3 - with: - timeout_minutes: 15 - max_attempts: 3 - retry_on: timeout - command: | - cd DeeployTest - mkdir -p /app/.ccache - export CCACHE_DIR=/app/.ccache - python testRunner_tiled_gap9.py -t Tests/${{ inputs.test-name }} --cores=${{ inputs.num-cores }} --l1 ${{ matrix.L1 }} --defaultMemLevel=${{ inputs.default-memory-level }} ${{ inputs.double-buffer && '--doublebuffer' || '' }} --memAllocStrategy=${{ inputs.memory-allocation-strategy }} --searchStrategy=${{ inputs.search-strategy }} - shell: bash + run: | + source /app/install/gap9-sdk/.gap9-venv/bin/activate + source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true + export GVSOC_INSTALL_DIR=/app/install/gap9-sdk/install/workstation + export GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 + cd DeeployTest + mkdir -p /app/.ccache + export CCACHE_DIR=/app/.ccache + python testRunner_tiled_gap9.py -t Tests/${{ inputs.test-name }} --cores=${{ inputs.num-cores }} --l1 ${{ matrix.L1 }} --defaultMemLevel=${{ inputs.default-memory-level }} ${{ inputs.double-buffer && '--doublebuffer' || '' }} --memAllocStrategy=${{ inputs.memory-allocation-strategy }} --searchStrategy=${{ inputs.search-strategy }} + deactivate + shell: bash diff --git a/.github/workflows/_runner-gap9.yml b/.github/workflows/_runner-gap9.yml index 82dfb4d475..c4dde94ba4 100644 --- a/.github/workflows/_runner-gap9.yml +++ b/.github/workflows/_runner-gap9.yml @@ -38,11 +38,11 @@ jobs: source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true pip install -e . || true deactivate - - name: Cache ccache - uses: actions/cache/restore@v4 + - name: Setup ccache + uses: actions/cache@v4 with: path: /app/.ccache - key: ccache-ci + key: ccache-ci - name: Run Test run: | testNames="${{ inputs.test-names }}" diff --git a/.github/workflows/ci-platform-gap9-tiled.yml b/.github/workflows/ci-platform-gap9-tiled.yml index e059c8f147..63c20f6883 100644 --- a/.github/workflows/ci-platform-gap9-tiled.yml +++ b/.github/workflows/ci-platform-gap9-tiled.yml @@ -47,8 +47,6 @@ jobs: L1: [800, 500, 300] - name: "testConcat" L1: [32000, 16000, 8000] - - name: "testRMSNorm" - L1: [2048, 1024, 512] - name: "Hardswish" L1: [750] - name: "RQHardswish" @@ -83,8 +81,6 @@ jobs: L1: [2000] - name: "testFloatMul" L1: [2000] - - name: "largeFloatAdd" - L1: [220000] - name: "testRQGEMMwBatch" L1: [20000] - name: "testMatMulBatch" @@ -113,8 +109,6 @@ jobs: L1: [1600, 1000, 600] - name: "testConcat" L1: [64000, 32000, 16000] - - name: "testRMSNorm" - L1: [4096, 2048, 1024] - name: "Hardswish" L1: [750] - name: "RQHardswish" diff --git a/.github/workflows/ci-platform-gap9.yml b/.github/workflows/ci-platform-gap9.yml index 29440bed7f..c8375fd01a 100644 --- a/.github/workflows/ci-platform-gap9.yml +++ b/.github/workflows/ci-platform-gap9.yml @@ -46,7 +46,6 @@ jobs: test2DRequantizedConv iSoftmax testConcat - testRMSNorm trueIntegerDivSandwich Hardswish RQHardswish diff --git a/.github/workflows/infra-generate-ccache.yml b/.github/workflows/infra-generate-ccache.yml index 721f09870b..ebe1790a65 100644 --- a/.github/workflows/infra-generate-ccache.yml +++ b/.github/workflows/infra-generate-ccache.yml @@ -43,6 +43,15 @@ jobs: python testRunner_tiled_siracusa.py -t ./Tests/Adder python testRunner_tiled_siracusa_w_neureka.py -t ./Tests/Adder python testRunner_chimera.py -t ./Tests/Adder + + # GAP9 tests + source /app/install/gap9-sdk/.gap9-venv/bin/activate + source /app/install/gap9-sdk/configs/gap9_evk_audio.sh || true + export GVSOC_INSTALL_DIR=/app/install/gap9-sdk/install/workstation + export GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 + python testRunner_gap9.py -t ./Tests/Adder + python testRunner_tiled_gap9.py -t ./Tests/Adder + deactivate - name: Clean and Upload CCache uses: actions/cache@v4 with: diff --git a/Container/Dockerfile.Gap9 b/Container/Dockerfile.Gap9 new file mode 100644 index 0000000000..f7c93b66be --- /dev/null +++ b/Container/Dockerfile.Gap9 @@ -0,0 +1,45 @@ +FROM ghcr.io/pulp-platform/deeploy:latest + +ENV GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 +ENV GAP_SDK_HOME=/app/install/gap9-sdk +ENV GAP_RISCV_GCC_TOOLCHAIN=/app/install/gcc/gap9 + +WORKDIR /app + +# Install SSH keys to access private repositories +RUN mkdir -p -m 0700 ~/.ssh && \ + ssh-keyscan iis-git.ee.ethz.ch >> ~/.ssh/known_hosts && \ + ssh-keyscan github.com >> ~/.ssh/known_hosts + +COPY Makefile ./ +COPY toolchain/*.patch toolchain/ + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y \ + sudo \ + rsync \ + build-essential \ + g++ \ + python3-dev \ + device-tree-compiler \ + bison \ + flex && \ + rm -rf /var/lib/apt/lists/* + +RUN --mount=type=cache,target=/ccache \ + ccache -z && make gap9-toolchain && \ + rm -rf /app/toolchain/gap9-toolchain + +RUN --mount=type=ssh \ + --mount=type=cache,target=/ccache \ + --mount=type=cache,target=/root/.cache/pip \ + ccache -z && \ + make gap9-sdk && \ + ccache -s && \ + rm -rf /app/toolchain/gap9-sdk && \ + rm -rf /app/install/gap9-sdk/build && \ + rm -rf /app/install/gap9-sdk/.git && \ + rm -rf /app/install/gap9-sdk/nn_menu && \ + find /app/install/gap9-sdk -name "*.o" -delete && \ + find /app/install/gap9-sdk -name "*.a" -not -path "*/lib/*" -delete \ No newline at end of file diff --git a/Container/Dockerfile.toolchain b/Container/Dockerfile.toolchain index c912d47e97..a7f4c828d6 100644 --- a/Container/Dockerfile.toolchain +++ b/Container/Dockerfile.toolchain @@ -119,4 +119,4 @@ RUN rm -rf cmake-* && \ rm -rf toolchain/llvm-project && \ rm -rf toolchain/minimalloc && \ rm -rf toolchain/picolibc && \ - rm -rf toolchain/gap9-toolchain + rm -rf toolchain/gap9-toolchain \ No newline at end of file diff --git a/Deeploy/Targets/GAP9/Bindings.py b/Deeploy/Targets/GAP9/Bindings.py index 73cc1ce03f..0e7b052f46 100644 --- a/Deeploy/Targets/GAP9/Bindings.py +++ b/Deeploy/Targets/GAP9/Bindings.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna # # SPDX-License-Identifier: Apache-2.0 - """ GAP9-specific bindings using cl_dma.h API instead of low-level MCHAN. @@ -12,25 +11,15 @@ import itertools from Deeploy.AbstractDataTypes import PointerClass +from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ + MemoryManagementGeneration, MemoryPassthroughGeneration from Deeploy.CommonExtensions.DataTypes import FloatDataTypes, IntegerDataTypes, SignedIntegerDataTypes, float32_t, \ int8_t, int32_t, int64_t, uint8_t from Deeploy.DeeployTypes import CodeTransformation, NodeBinding from Deeploy.FutureExtension.Bindings.AutoFutureBinding import AutoFutureBinding -from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \ - MemoryManagementGeneration, MemoryPassthroughGeneration from Deeploy.FutureExtension.CodeTransformationPasses.FutureCodeTransformation import FutureGeneration -from Deeploy.TilingExtension.CodeTransformationPasses.TilingVariableReplacement import TilingVariableReplacement, \ - TilingVariableReplacementUpdate -from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterSynch import PULPSynchCoresPass -from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterTiling import PULPClusterTiling -from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPL3Tiling import PULPL3Tiling -from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPProfileUntiled import PULPProfileUntiled -from Deeploy.Targets.PULPOpen.Bindings import TilingCallClosure, ForkClosure, \ - MemoryAwareFunctionCallClosure, L3MemoryAwareFunctionCallClosure, MemoryAwareForkTransformer -from Deeploy.Targets.PULPOpen.DataTypes import PULPDMAFuture -from Deeploy.Targets.GAP9.DMA.MchanDma import GAP9MchanDma from Deeploy.Targets.GAP9.DMA.L3Dma import gap9L3DmaHack - +from Deeploy.Targets.GAP9.DMA.MchanDma import GAP9MchanDma # Import templates from PULPOpen and Generic from Deeploy.Targets.Generic.Templates import AddTemplate, ConcatTemplate, DequantTemplate, FloatReduceMeanTemplate, \ FloatReduceSumTemplate, GatherTemplate, QuantTemplate, RQSiGELUTemplate, SliceTemplate, iHardswishTemplate @@ -38,6 +27,13 @@ GatherChecker, GELUChecker, GEMMChecker, HardswishChecker, LayerNormChecker, MatMulChecker, MulChecker, \ QuantChecker, ReduceMeanChecker, ReluChecker, ReshapeChecker, RQAddChecker, RQHardswishChecker, SGDChecker, \ SliceChecker, SoftmaxChecker, SoftmaxCrossEntropyLossChecker, TransposeChecker +from Deeploy.Targets.PULPOpen.Bindings import ForkClosure, L3MemoryAwareFunctionCallClosure, \ + MemoryAwareForkTransformer, MemoryAwareFunctionCallClosure, TilingCallClosure +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterSynch import PULPSynchCoresPass +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPClusterTiling import PULPClusterTiling +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPL3Tiling import PULPL3Tiling +from Deeploy.Targets.PULPOpen.CodeTransformationPasses.PULPProfileUntiled import PULPProfileUntiled +from Deeploy.Targets.PULPOpen.DataTypes import PULPDMAFuture from Deeploy.Targets.PULPOpen.Templates import ConvTemplate, DMASliceTemplate, FloatAddTemplate, FloatConvTemplate, \ FloatGELUTemplate, FloatGemmTemplate, FloatLayernormTemplate, FloatMatMulTemplate, FloatMaxPoolTemplate, \ FloatMulTemplate, FloatReluTemplate, FloatSoftmaxTemplate, GEMMTemplate, MatrixVectorTemplate, MaxPool2DTemplate, \ @@ -46,7 +42,8 @@ iRMSNormTemplate, iSoftmaxTemplate from Deeploy.Targets.PULPOpen.TypeCheckers import PULPConvChecker, PULPLinearChecker, PULPMaxPoolChecker, \ PULPRequantShiftChecker - +from Deeploy.TilingExtension.CodeTransformationPasses.TilingVariableReplacement import TilingVariableReplacement, \ + TilingVariableReplacementUpdate # GAP9-specific transformer using cl_dma.h API GAP9Transformer = CodeTransformation([ @@ -102,7 +99,6 @@ MemoryPassthroughGeneration(), FutureGeneration()]) - # =============================================================================== # GAP9-specific bindings using ClDma instead of MchanDma # All bindings below use GAP9Transformer or GAP9ClusterTransformer diff --git a/Deeploy/Targets/GAP9/DMA/MchanDma.py b/Deeploy/Targets/GAP9/DMA/MchanDma.py index eec611c986..14e7eb0930 100644 --- a/Deeploy/Targets/GAP9/DMA/MchanDma.py +++ b/Deeploy/Targets/GAP9/DMA/MchanDma.py @@ -10,13 +10,6 @@ class MchanTransferFuture(Future): - """ - Future implementation for GAP9's MCHAN v7 low-level API. - Based on DORY's implementation: https://github.com/pulp-platform/dory - - Uses direct hardware register access for maximum performance. - """ - _initTemplate = NodeTemplate("int ${name} = -1;") _deinitTemplate = NodeTemplate("") @@ -24,31 +17,24 @@ class MchanTransferFuture(Future): _allocTemplate = NodeTemplate("${name} = mchan_transfer_get_id();") _waitTemplate = NodeTemplate(""" -if (${name} >= 0) { - mchan_transfer_wait(${name}); - mchan_transfer_free(${name}); -} -""") + if (${name} >= 0) { + mchan_transfer_wait(${name}); + mchan_transfer_free(${name}); + } + """) class GAP9MchanDma(AsyncDma): - """ - GAP9 Cluster DMA implementation using MCHAN v7 low-level API. - - This implementation follows DORY's approach for GAP9: - - Direct hardware register access for MCHAN v7 - - Manual transfer ID management - - Support for 1D, 2D, and 3D transfers - - Event-based or polled synchronization - - References: - - DORY GAP9: https://github.com/pulp-platform/dory/tree/master/dory/Hardware_targets/PULP/GAP9 - - MCHAN v7 specification in GAP9 documentation - """ _transferTemplates = { - 1: NodeTemplate("{ mchan_transfer_t __mchan_tmp = { .cmd = ${cmd}, .size = ${size}, .loc = ${loc}, .ext = ${ext} }; mchan_transfer_push_1d(__mchan_tmp); }"), - 2: NodeTemplate("{ mchan_transfer_t __mchan_tmp = { .cmd = ${cmd}, .size = ${size}, .loc = ${loc}, .ext = ${ext}, .ext_size_1d = ${size_1d}, .ext_stride_1d = ${stride_2d} }; mchan_transfer_push_2d(__mchan_tmp); }"), + 1: + NodeTemplate( + "{ mchan_transfer_t __mchan_tmp = { .cmd = ${cmd}, .size = ${size}, .loc = ${loc}, .ext = ${ext} }; mchan_transfer_push_1d(__mchan_tmp); }" + ), + 2: + NodeTemplate( + "{ mchan_transfer_t __mchan_tmp = { .cmd = ${cmd}, .size = ${size}, .loc = ${loc}, .ext = ${ext}, .ext_size_1d = ${size_1d}, .ext_stride_1d = ${stride_2d} }; mchan_transfer_push_2d(__mchan_tmp); }" + ), } _waitingStrategy = DirectionWaitingStrategy(MchanTransferFuture, "transfer") diff --git a/Deeploy/Targets/GAP9/Deployer.py b/Deeploy/Targets/GAP9/Deployer.py index 13aaaca4cf..cf7382d0ed 100644 --- a/Deeploy/Targets/GAP9/Deployer.py +++ b/Deeploy/Targets/GAP9/Deployer.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna # # SPDX-License-Identifier: Apache-2.0 - """ GAP9-specific deployer that uses cl_dma.h API. @@ -9,7 +8,7 @@ the GAP9Bindings transformers. """ -from typing import Callable, Dict, List, Type +from typing import Callable, Dict, Type import numpy as np import onnx_graphsurgeon as gs @@ -17,8 +16,8 @@ from Deeploy.AbstractDataTypes import Pointer from Deeploy.CommonExtensions.NetworkDeployers.SignPropDeployer import SignPropDeployer from Deeploy.DeeployTypes import ConstantBuffer, DeploymentPlatform, NodeTemplate, TopologyOptimizer, VariableBuffer +from Deeploy.Targets.GAP9.Bindings import GAP9ClusterTransformer, GAP9SimpleTransformer, GAP9Transformer from Deeploy.Targets.PULPOpen.Deployer import PULPDeployer -from Deeploy.Targets.GAP9.Bindings import GAP9Transformer, GAP9ClusterTransformer, GAP9SimpleTransformer # GAP9-specific L3 RAM allocation and loading templates _GAP9L3AllocTemplate = NodeTemplate(""" @@ -62,7 +61,7 @@ def __init__(self, default_channels_first = default_channels_first, deeployStateDir = deeployStateDir, inputOffsets = inputOffsets) - + # Override transformers to use GAP9-specific ones with ClDma self.Transformer = GAP9Transformer self.ClusterTransformer = GAP9ClusterTransformer @@ -73,8 +72,7 @@ def generateBufferAllocationCode(self) -> str: L3FileStr = "" globalConstBuffers = [ - buf for key, buf in self.ctxt.globalObjects.items() - if isinstance(buf, VariableBuffer) and buf._deploy + buf for key, buf in self.ctxt.globalObjects.items() if isinstance(buf, VariableBuffer) and buf._deploy ] nonArenaBuffers = [buf for buf in globalConstBuffers if buf._users != []] outputBuffNames = [outputBuffer.name for outputBuffer in self.graph.outputs] @@ -94,18 +92,10 @@ def generateBufferAllocationCode(self) -> str: # Allocate L3 RAM space (for constant buffers only) if isinstance(buf, ConstantBuffer): - L3FileStr += _GAP9L3AllocTemplate.generate({ - "locPtr": locPtr, - "extName": extName, - "size": size - }) + L3FileStr += _GAP9L3AllocTemplate.generate({"locPtr": locPtr, "extName": extName, "size": size}) # Load data from ReadFS - L3FileStr += _GAP9L3InitTemplate.generate({ - "locPtr": locPtr, - "extName": extName, - "size": size - }) + L3FileStr += _GAP9L3InitTemplate.generate({"locPtr": locPtr, "extName": extName, "size": size}) retStr = retStr + L3FileStr diff --git a/Deeploy/Targets/GAP9/Platform.py b/Deeploy/Targets/GAP9/Platform.py index 147fc50484..cb37a28e91 100644 --- a/Deeploy/Targets/GAP9/Platform.py +++ b/Deeploy/Targets/GAP9/Platform.py @@ -10,7 +10,19 @@ from Deeploy.MemoryLevelExtension.MemoryLevels import MemoryHierarchy, MemoryLevel from Deeploy.MemoryLevelExtension.NetworkDeployers.MemoryLevelDeployer import MemoryPlatform, MemoryPlatformWrapper from Deeploy.Targets.GAP9.Templates import AllocateTemplate, FreeTemplate -from Deeploy.Targets.Generic.Templates import AllocateTemplate as BasicAllocateTemplate +# Import GAP9-specific tiler bindings +from Deeploy.Targets.GAP9.Tiler import GAP9AddTilingReadyBindings, GAP9ConcatTilingReadyBindings, \ + GAP9Conv2DTilingReadyBindings, GAP9DWConv2DTilingReadyBindings, GAP9FlattenTilingReadyBindings, \ + GAP9FPGELUTilingReadyBindings, GAP9FPGEMMTilingReadyBindings, GAP9GatherTilingReadyBindings, \ + GAP9iHardswishTilingReadyBindings, GAP9iRMSNormTilingReadyBindings, GAP9iRQSGELUTilingReadyBindings, \ + GAP9LayernormTilingReadyBindings, GAP9MatMulTilingReadyBindings, GAP9MaxPool2DTilingReadyBindings, \ + GAP9MulTilingReadyBindings, GAP9ReduceSumTilingReadyBindings, GAP9ReluTilingReadyBindings, \ + GAP9RQAddTilingReadyBindings, GAP9RQSConv2DTilingReadyBindings, GAP9RQSDWConv2DTilingReadyBindings, \ + GAP9RQSGEMMTilingReadyBindings, GAP9RQSiHardswishTilingReadyBindings, GAP9RQSMatrixVecTilingReadyBindings, \ + GAP9RQSTallGEMMTilingReadyBindings, GAP9RQSTilingReadyBindings, GAP9SGDTilingReadyBindings, \ + GAP9SoftmaxCrossEntropyGradTilingReadyBindings, GAP9SoftmaxCrossEntropyTilingReadyBindings, \ + GAP9SoftmaxGradTilingReadyBindings, GAP9SoftmaxTilingReadyBindings, GAP9TransposeTilingReadyBindings, \ + GAP9UniformRQSTilingReadyBindings from Deeploy.Targets.Generic.Bindings import BasicGEMMBindings, BasicPad1DBindings, BasicPad2DBindings, \ BasicRQIntegerDivBinding from Deeploy.Targets.Generic.Layers import AddLayer, ConcatLayer, ConvLayer, GatherLayer, GELULayer, GEMMLayer, \ @@ -24,48 +36,14 @@ RQIntegerDivParser, RQSiGELUParser, RQSiHardswishParser, SGDParser, SliceParser, \ SoftmaxCrossEntropyLossGradParser, SoftmaxCrossEntropyLossParser, SoftmaxGradParser, SoftmaxParser, \ TransposeParser, UniformRequantShiftParser, UnsqueezeParser, iHardswishParser, iRMSNormParser, iSoftmaxParser +from Deeploy.Targets.Generic.Templates import AllocateTemplate as BasicAllocateTemplate from Deeploy.Targets.PULPOpen.Bindings import BasicDequantBindings, BasicQuantBindings, PULPConv1DBinding, \ - PULPDMASliceBindings, PULPDWConv1DBinding, PULPFloatDWConv2DBindings, PULPReduceMeanBindings, PULPSliceBindings + PULPDMASliceBindings, PULPDWConv1DBinding, PULPReduceMeanBindings, PULPSliceBindings from Deeploy.Targets.PULPOpen.Layers import PULPRQSConvLayer, PULPRQSGEMMLayer from Deeploy.Targets.PULPOpen.Parsers import PULPConv1DParser, PULPConv2DParser, PULPDWConv1DParser, \ PULPDWConv2DParser, PULPFPConv2DParser, PULPFPDWConv2DParser, PULPGEMMParser, PULPMatrixVecParser, \ PULPTallGEMMParser -# Import GAP9-specific tiler bindings -from Deeploy.Targets.GAP9.Tiler import ( - GAP9AddTilingReadyBindings, - GAP9ConcatTilingReadyBindings, - GAP9Conv2DTilingReadyBindings, - GAP9FlattenTilingReadyBindings, - GAP9FPGELUTilingReadyBindings, - GAP9FPGEMMTilingReadyBindings, - GAP9GatherTilingReadyBindings, - GAP9iHardswishTilingReadyBindings, - GAP9iRMSNormTilingReadyBindings, - GAP9iRQSGELUTilingReadyBindings, - GAP9LayernormTilingReadyBindings, - GAP9MatMulTilingReadyBindings, - GAP9MaxPool2DTilingReadyBindings, - GAP9MulTilingReadyBindings, - GAP9ReduceSumTilingReadyBindings, - GAP9ReluTilingReadyBindings, - GAP9RQAddTilingReadyBindings, - GAP9RQSConv2DTilingReadyBindings, - GAP9RQSDWConv2DTilingReadyBindings, - GAP9RQSGEMMTilingReadyBindings, - GAP9RQSiHardswishTilingReadyBindings, - GAP9RQSMatrixVecTilingReadyBindings, - GAP9RQSTallGEMMTilingReadyBindings, - GAP9RQSTilingReadyBindings, - GAP9SGDTilingReadyBindings, - GAP9SoftmaxCrossEntropyGradTilingReadyBindings, - GAP9SoftmaxCrossEntropyTilingReadyBindings, - GAP9SoftmaxGradTilingReadyBindings, - GAP9SoftmaxTilingReadyBindings, - GAP9TransposeTilingReadyBindings, - GAP9UniformRQSTilingReadyBindings, -) - # Create GAP9-specific NodeMappers GAP9_RQAddMapper = NodeMapper(RQAddParser(), GAP9RQAddTilingReadyBindings) GAP9_AddMapper = NodeMapper(AddParser(), GAP9AddTilingReadyBindings) @@ -89,7 +67,7 @@ GAP9_DWConv1DMapper = NodeMapper(PULPDWConv1DParser(), [PULPDWConv1DBinding]) GAP9_FPConv2DMapper = NodeMapper(PULPFPConv2DParser(), GAP9Conv2DTilingReadyBindings) GAP9_Conv2DMapper = NodeMapper(PULPConv2DParser(), GAP9RQSConv2DTilingReadyBindings) -GAP9_FPDWConv2DMapper = NodeMapper(PULPFPDWConv2DParser(), PULPFloatDWConv2DBindings) +GAP9_FPDWConv2DMapper = NodeMapper(PULPFPDWConv2DParser(), GAP9DWConv2DTilingReadyBindings) GAP9_DWConv2DMapper = NodeMapper(PULPDWConv2DParser(), GAP9RQSDWConv2DTilingReadyBindings) GAP9_GEMMMapper = NodeMapper(PULPGEMMParser(), GAP9RQSGEMMTilingReadyBindings) GAP9_FloatGEMMMapper = NodeMapper(GEMMParser(), GAP9FPGEMMTilingReadyBindings) @@ -118,44 +96,82 @@ # GAP9-specific mapping using ClDma GAP9Mapping = { - 'Conv': ConvLayer([GAP9_FPConv2DMapper, GAP9_FPDWConv2DMapper]), - 'RequantizedConv': PULPRQSConvLayer([GAP9_Conv2DMapper, GAP9_DWConv2DMapper, GAP9_Conv1DMapper, GAP9_DWConv1DMapper]), - 'RequantizedGemm': PULPRQSGEMMLayer([GAP9_MatrixVecMapper, GAP9_TallGEMMMapper, GAP9_GEMMMapper]), - 'Gemm': GEMMLayer([GAP9_FloatGEMMMapper, GAP9_GEMMDequantMapper]), - 'Gelu': GELULayer([GAP9_GELUMapper]), - 'LayerNormalization': LayerNormLayer([GAP9_LayerNormMapper]), - 'MaxPool': MaxPoolLayer([GAP9_MaxPool2DMapper]), - 'RequantizediGELU': RQSiGELULayer([GAP9_RQGELU_int8_Mapper]), - 'RQIntegerDiv': RQIntegerDivLayer([GAP9_RQIntegerDivMapper]), - 'MatMul': MatMulLayer([GAP9_MatMulMapper]), - 'IntegerMean': ReduceMeanLayer([GAP9_ReduceMeanMapper]), - 'iSoftmax': SoftmaxLayer([GAP9_Softmax_int8_Mapper]), - 'Softmax': SoftmaxLayer([GAP9_SoftmaxMapper]), - 'ReduceMean': ReduceMeanLayer([GAP9_ReduceMeanMapper]), - 'ReduceSum': ReduceSumLayer([GAP9_ReduceSumMapper]), - 'RequantShift': RequantShiftLayer([GAP9_UniformRequantShiftMapper, GAP9_RequantShiftMapper]), - 'Add': AddLayer([GAP9_AddMapper]), - 'Flatten': ReshapeLayer([GAP9_FlattenMapper]), - 'Gather': GatherLayer([GAP9_GatherMapper]), - 'Mul': MulLayer([GAP9_MulMapper]), - 'Pad': PadLayer([GAP9_Pad1DMapper, GAP9_Pad2DMapper]), - 'Relu': ReluLayer([GAP9_ReluMapper]), - 'Reshape': ReshapeLayer([GAP9_ReshapeMapper]), - 'Squeeze': ReshapeLayer([GAP9_UnsqueezeMapper]), - 'Transpose': TransposeLayer([GAP9_TransposeMapper]), - 'Unsqueeze': ReshapeLayer([GAP9_UnsqueezeMapper]), - 'Slice': SliceLayer([GAP9_SliceMapper, GAP9_DMASliceMapper]), - 'RequantizedAdd': AddLayer([GAP9_RQAddMapper]), - 'Concat': ConcatLayer([GAP9_ConcatMapper]), - 'iRMSNorm': iRMSNormLayer([GAP9_iRMSNormMapper]), - 'iHardswish': iHardswishLayer([GAP9_iHardswishMapper]), - 'RequantizediHardswish': RQSiHardswishLayer([GAP9_RQSiHardswishMapper]), - 'Quant': QuantLayer([GAP9_QuantMapper]), - 'Dequant': QuantLayer([GAP9_DequantMapper]), - 'SoftmaxGrad': SoftmaxGradLayer([GAP9_SoftmaxGradMapper]), - 'SoftmaxCrossEntropyLoss': SoftmaxCrossEntropyLossLayer([GAP9_SoftmaxCrossEntropyLossMapper]), - 'SoftmaxCrossEntropyLossGrad': SoftmaxCrossEntropyLossGradLayer([GAP9_SoftmaxCrossEntropyLossGradMapper]), - 'SGD': SGDLayer([GAP9_SGDMapper]) + 'Conv': + ConvLayer([GAP9_FPConv2DMapper, GAP9_FPDWConv2DMapper]), + 'RequantizedConv': + PULPRQSConvLayer([GAP9_Conv2DMapper, GAP9_DWConv2DMapper, GAP9_Conv1DMapper, GAP9_DWConv1DMapper]), + 'RequantizedGemm': + PULPRQSGEMMLayer([GAP9_MatrixVecMapper, GAP9_TallGEMMMapper, GAP9_GEMMMapper]), + 'Gemm': + GEMMLayer([GAP9_FloatGEMMMapper, GAP9_GEMMDequantMapper]), + 'Gelu': + GELULayer([GAP9_GELUMapper]), + 'LayerNormalization': + LayerNormLayer([GAP9_LayerNormMapper]), + 'MaxPool': + MaxPoolLayer([GAP9_MaxPool2DMapper]), + 'RequantizediGELU': + RQSiGELULayer([GAP9_RQGELU_int8_Mapper]), + 'RQIntegerDiv': + RQIntegerDivLayer([GAP9_RQIntegerDivMapper]), + 'MatMul': + MatMulLayer([GAP9_MatMulMapper]), + 'IntegerMean': + ReduceMeanLayer([GAP9_ReduceMeanMapper]), + 'iSoftmax': + SoftmaxLayer([GAP9_Softmax_int8_Mapper]), + 'Softmax': + SoftmaxLayer([GAP9_SoftmaxMapper]), + 'ReduceMean': + ReduceMeanLayer([GAP9_ReduceMeanMapper]), + 'ReduceSum': + ReduceSumLayer([GAP9_ReduceSumMapper]), + 'RequantShift': + RequantShiftLayer([GAP9_UniformRequantShiftMapper, GAP9_RequantShiftMapper]), + 'Add': + AddLayer([GAP9_AddMapper]), + 'Flatten': + ReshapeLayer([GAP9_FlattenMapper]), + 'Gather': + GatherLayer([GAP9_GatherMapper]), + 'Mul': + MulLayer([GAP9_MulMapper]), + 'Pad': + PadLayer([GAP9_Pad1DMapper, GAP9_Pad2DMapper]), + 'Relu': + ReluLayer([GAP9_ReluMapper]), + 'Reshape': + ReshapeLayer([GAP9_ReshapeMapper]), + 'Squeeze': + ReshapeLayer([GAP9_UnsqueezeMapper]), + 'Transpose': + TransposeLayer([GAP9_TransposeMapper]), + 'Unsqueeze': + ReshapeLayer([GAP9_UnsqueezeMapper]), + 'Slice': + SliceLayer([GAP9_SliceMapper, GAP9_DMASliceMapper]), + 'RequantizedAdd': + AddLayer([GAP9_RQAddMapper]), + 'Concat': + ConcatLayer([GAP9_ConcatMapper]), + 'iRMSNorm': + iRMSNormLayer([GAP9_iRMSNormMapper]), + 'iHardswish': + iHardswishLayer([GAP9_iHardswishMapper]), + 'RequantizediHardswish': + RQSiHardswishLayer([GAP9_RQSiHardswishMapper]), + 'Quant': + QuantLayer([GAP9_QuantMapper]), + 'Dequant': + QuantLayer([GAP9_DequantMapper]), + 'SoftmaxGrad': + SoftmaxGradLayer([GAP9_SoftmaxGradMapper]), + 'SoftmaxCrossEntropyLoss': + SoftmaxCrossEntropyLossLayer([GAP9_SoftmaxCrossEntropyLossMapper]), + 'SoftmaxCrossEntropyLossGrad': + SoftmaxCrossEntropyLossGradLayer([GAP9_SoftmaxCrossEntropyLossGradMapper]), + 'SGD': + SGDLayer([GAP9_SGDMapper]) } @@ -229,17 +245,17 @@ class GAP9StructBuffer(StructBuffer): # SCHEREMO: stdint is included before pulp_nn_kernels.h because it is supposed to be included in there, but isn't... -_includeList = [ - "pmsis.h", - "DeeployGAP9Math.h", - "pulp_nn_kernels.h", - "DeeployMchan.h" -] +_includeList = ["pmsis.h", "DeeployGAP9Math.h", "pulp_nn_kernels.h", "DeeployMchan.h"] class GAP9ClusterEngine(DeploymentEngine): - def __init__(self, name: str, Mapping = GAP9Mapping, initCode = "", includeList = _includeList, n_cores: int = 8) -> None: + def __init__(self, + name: str, + Mapping = GAP9Mapping, + initCode = "", + includeList = _includeList, + n_cores: int = 8) -> None: super().__init__(name, Mapping, initCode, includeList) self.n_cores = n_cores diff --git a/Deeploy/Targets/GAP9/Tiler.py b/Deeploy/Targets/GAP9/Tiler.py index 32676df5e6..fefe12b6d7 100644 --- a/Deeploy/Targets/GAP9/Tiler.py +++ b/Deeploy/Targets/GAP9/Tiler.py @@ -1,7 +1,6 @@ # SPDX-FileCopyrightText: 2025 ETH Zurich and University of Bologna # # SPDX-License-Identifier: Apache-2.0 - """ GAP9-specific tiler bindings using ClDma instead of MchanDma. @@ -11,6 +10,14 @@ import copy +from Deeploy.Targets.GAP9.Bindings import GAP9AddBindings, GAP9ConcatBindings, GAP9FloatConv2DBindings, \ + GAP9FloatDWConv2DBindings, GAP9FloatGELUBinding, GAP9FloatGEMMBindings, GAP9GatherBindings, \ + GAP9iHardswishBindings, GAP9iRMSNormBindings, GAP9iRQSGELUBindings, GAP9LayernormBinding, GAP9MatMulBindings, \ + GAP9MaxPool2DBindings, GAP9MulBindings, GAP9ReduceSumBindings, GAP9ReluBinding, GAP9ReshapeBindings, \ + GAP9RQAddBindings, GAP9RQSBindings, GAP9RQSConv2DBindings, GAP9RQSDWConv2DBindings, GAP9RQSGEMMBindings, \ + GAP9RQSiHardswishBindings, GAP9RQSMatrixVecBindings, GAP9RQSTallGEMMBindings, GAP9SGDBindings, \ + GAP9SoftmaxBindings, GAP9SoftmaxCrossEntropyLossBindings, GAP9SoftmaxCrossEntropyLossGradBindings, \ + GAP9SoftmaxGradBindings, GAP9TransposeBindings, GAP9UniformRQSBindings from Deeploy.Targets.Generic.TileConstraints.AddTileConstraint import AddTileConstraint from Deeploy.Targets.Generic.TileConstraints.ConcatTileConstraint import ConcatTileConstraint from Deeploy.Targets.Generic.TileConstraints.iHardswishTileConstraint import iHardswishTileConstraint @@ -22,40 +29,6 @@ from Deeploy.Targets.Generic.TileConstraints.TransposeTileConstraint import TransposeTileConstraint from Deeploy.Targets.Generic.TileConstraints.UnaryTileConstraint import UnaryTileConstraint from Deeploy.Targets.Generic.TileConstraints.UntiledTileConstraint import UntiledTileConstraint -from Deeploy.Targets.GAP9.Bindings import ( - GAP9AddBindings, - GAP9ConcatBindings, - GAP9FloatConv2DBindings, - GAP9FloatGELUBinding, - GAP9FloatGEMMBindings, - GAP9GatherBindings, - GAP9iHardswishBindings, - GAP9iRMSNormBindings, - GAP9iRQSGELUBindings, - GAP9LayernormBinding, - GAP9MatMulBindings, - GAP9MaxPool2DBindings, - GAP9MulBindings, - GAP9ReduceSumBindings, - GAP9ReluBinding, - GAP9ReshapeBindings, - GAP9RQAddBindings, - GAP9RQSBindings, - GAP9RQSConv2DBindings, - GAP9RQSDWConv2DBindings, - GAP9RQSGEMMBindings, - GAP9RQSiHardswishBindings, - GAP9RQSMatrixVecBindings, - GAP9RQSTallGEMMBindings, - GAP9SGDBindings, - GAP9SoftmaxBindings, - GAP9SoftmaxCrossEntropyLossBindings, - GAP9SoftmaxCrossEntropyLossGradBindings, - GAP9SoftmaxGradBindings, - GAP9TransposeBindings, - GAP9UniformRQSBindings, - GAP9FloatDWConv2DBindings -) from Deeploy.Targets.PULPOpen.TileConstraints.ConvTileConstraint import Conv2DTileConstraint, RQConv2DTileConstraint from Deeploy.Targets.PULPOpen.TileConstraints.DWConvTileConstraint import DWConv2DTileConstraint, \ RQDWConv2DTileConstraint diff --git a/Deeploy/Targets/PULPOpen/Deployer.py b/Deeploy/Targets/PULPOpen/Deployer.py index 4162c4e9a2..0828cb392e 100644 --- a/Deeploy/Targets/PULPOpen/Deployer.py +++ b/Deeploy/Targets/PULPOpen/Deployer.py @@ -13,9 +13,9 @@ from Deeploy.CommonExtensions.OptimizationPasses.TopologyOptimizationPasses.LoweringOptimizationPasses import \ PULPNCHWtoNHWCPass, RemoveGlobalOutputReshapePass, TransposeMatmulInputsPass from Deeploy.DeeployTypes import ConstantBuffer, DeploymentPlatform, NodeTemplate, TopologyOptimizer, VariableBuffer +from Deeploy.Targets.GAP9.Platform import GAP9ClusterEngine from Deeploy.Targets.Generic.TopologyOptimizationPasses.Passes import ReshapeConstOptPass, TransposeConstOptPass, \ TransposeMergePass, TransposeNoPermOptPass, TransposeSplitPass -from Deeploy.Targets.GAP9.Platform import GAP9ClusterEngine from Deeploy.Targets.PULPOpen.Platform import PULPClusterEngine from Deeploy.Targets.PULPOpen.TopologyOptimizationPasses.Passes import RQAddTransposeSquashPass diff --git a/DeeployTest/Platforms/GAP9/CMakeLists.txt b/DeeployTest/Platforms/GAP9/CMakeLists.txt index b1d32659f6..0a7fde9c00 100644 --- a/DeeployTest/Platforms/GAP9/CMakeLists.txt +++ b/DeeployTest/Platforms/GAP9/CMakeLists.txt @@ -4,8 +4,6 @@ set(ProjectId ${TESTNAME}) -# set($ENV{KCONFIG_CONFIG} ${CMAKE_CURRENT_LIST_DIR}/sdk.config) -# set(${SDKCONFIG_DIR} ${CMAKE_CURRENT_LIST_DIR}) set(${SDKCONFIG_FILE} ${CMAKE_CURRENT_LIST_DIR}/sdk.config) diff --git a/DeeployTest/output.txt b/DeeployTest/output.txt deleted file mode 100644 index 2152566c73..0000000000 --- a/DeeployTest/output.txt +++ /dev/null @@ -1,869 +0,0 @@ --- Building for platform 'GAP9' --- [SDK] Version: 5.20.4 --- [Platform] GVSoC --- [OS] FreeRTOS (Scheduler v2) --- [Printf] Semihost --- [Board] GAP Family : 9 --- [Board] GAP Version : 2 --- ============================= Project Configuration ============================ --- [Deeploy] platform = GAP9 --- [Deeploy] use_dma = --- ================================================================================ --- --- ==== HEXLIST ==== --- HEXLIST file: /app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex --- HEXLIST file: /app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex --- GAPY_RUNNER_ARGS: --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex@flash:readfs_flash:file;--flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex@flash:readfs_flash:file --- [Deeploy GAP9] L3 mode: using gapy with readfs --- [Deeploy GAP9] Adding readfs files: --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex@flash:readfs_flash:file;--flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex@flash:readfs_flash:file --- [Deeploy GAP9] GAPY_CMD = /app/install/gap9-sdk/utils/gapy_v2/bin/gapy --target=gap9.evk --target-dir=/app/install/gap9-sdk/install/workstation/generators --model-dir=/app/install/gap9-sdk/install/workstation/models --platform=gvsoc --work-dir=/app/Deeploy/DeeployTest/TEST_GAP9/build/gvsoc_workdir --target-property=boot.flash_device=mram --target-property=boot.mode=flash --multi-flash-content=/app/install/gap9-sdk/utils/layouts/default_layout_multi_readfs.json --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/build/testFloatMatmul@mram:app:binary --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/0.hex@flash:readfs_flash:file --flash-property=/app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul/hex/1.hex@flash:readfs_flash:file --flash-property=/app/install/gap9-sdk/install/target/bin/fsbl@mram:fsbl:binary --flash-property=/app/install/gap9-sdk/install/target/bin/ssbl@mram:ssbl:binary --py-stack image flash run --binary=/app/Deeploy/DeeployTest/TEST_GAP9/build/testFloatMatmul --- [Log] none --- [PULP-NN] pmsis target exists, extracting properties... --- [PULP-NN] PMSIS_INCLUDES: /app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/maestro/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i2s/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/efuse/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/fll/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/cluster/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_core/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/timer/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/fc_event/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/pad/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/gpio/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/ffc/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/perf/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/watchdog/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i2c/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i2s/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/i3c/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_datamove/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/spim/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_timeout/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_timestamp/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/dmacpy/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/pwm/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/rtc/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/xip/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_hyperbus/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_octospi/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_aes/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_aes_dual_core/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_cpi/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_csi2/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_uart/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_fifo/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/udma_sdio/include;/app/install/gap9-sdk/rtos/pmsis/implem/chips/gap9/quiddikey/include;/app/install/gap9-sdk/rtos/pmsis/implem/include;/app/install/gap9-sdk/rtos/pmsis/implem/rtos/include;/app/install/gap9-sdk/rtos/pmsis/bsp/boards/include;/app/install/gap9-sdk/rtos/pmsis/bsp/buffer;/app/install/gap9-sdk/rtos/pmsis/bsp/crc/crc32/include;/app/install/gap9-sdk/rtos/pmsis/bsp/crc/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/api/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/mram/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/mx25u51245g/include;/app/install/gap9-sdk/rtos/pmsis/bsp/flash/include;/app/install/gap9-sdk/rtos/pmsis/bsp/powersupply/api/include;/app/install/gap9-sdk/rtos/pmsis/bsp/powersupply/powersupplygpio/include;/app/install/gap9-sdk/rtos/pmsis/bsp/powersupply/include;/app/install/gap9-sdk/rtos/pmsis/bsp/ram/api/include;/app/install/gap9-sdk/rtos/pmsis/bsp/ram/aps256xxn/include;/app/install/gap9-sdk/rtos/pmsis/bsp/ram/include;/app/install/gap9-sdk/rtos/pmsis/bsp/include;/app/Deeploy/DeeployTest/TEST_GAP9/build/devicetree/internal/include;/app/Deeploy/DeeployTest/TEST_GAP9/build/devicetree/include;/app/Deeploy/DeeployTest/TEST_GAP9/build/devicetree/fpv2/include;/app/install/gap9-sdk/rtos/pmsis/include --- [PULP-NN] PMSIS_COMPILE_OPTIONS: -D__GAP__;-D__riscv__;-D__RISCV_ARCH_GAP__=1;-D__USE_TCDM_MALLOC__=1;-D__FC_MALLOC_NATIVE__=0;-D__L2_MALLOC_NATIVE__=0;-D__PMSIS_L2_MALLOC_NATIVE__=0;-DPMSIS_DRIVERS=1;-DFEATURE_CLUSTER;-DGAP_SDK_VERSION=5.20.4;-D__PLATFORM_GVSOC__;-D__PLATFORM__=ARCHI_PLATFORM_GVSOC;-D__FREERTOS__;-DSCHEDULER_V2;-DSCHEDULER_V3;-D__SEMIHOSTING__;-DPRINTF_SEMIHOST;-D__GAP_DRIVER_READFS__=1 --- [PULP-NN] Added PMSIS includes to pulp-nn-mixed --- ============================= Simulation Configuration ============================ --- [Simulator] QuestaSim = questa-2022.3 --- [Simulator] Verilator = verilator-4.110 --- [Simulator] VCS = vcs-2020.12 --- [Simulator] banshee_simulation = OFF --- [Simulator] banshee_configuration = --- [Simulator] gvsoc_simulation = ON --- [Simulator] banshee_stack_size = 16777216 --- [Simulator] num_threads = 1 --- ================================================================================ --- --- Configuring done --- Generating done --- Build files have been written to: /app/Deeploy/DeeployTest/TEST_GAP9/build -Consolidate compiler generated dependencies of target pmsis_printf -[ 0%] Built target pmsis_printf -Consolidate compiler generated dependencies of target pulp_allocator -[ 0%] Built target pulp_allocator -Consolidate compiler generated dependencies of target freertos_libs -[ 0%] Built target freertos_libs -Consolidate compiler generated dependencies of target fll_pmu_lib -[ 1%] Built target fll_pmu_lib -Scanning dependencies of target pmsis -Consolidate compiler generated dependencies of target pmsis -[ 1%] Building C object pmsis/CMakeFiles/pmsis.dir/implem/utils/gap_io.c.obj -[ 1%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/bsp/bsp.c.obj -[ 1%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/fs/read_fs/read_fs.c.obj -[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/partition/flash_partition_v2.c.obj -[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/bsp/partition/secret_storage.c.obj -[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/__/devicetree/internal/devicetree_internal.c.obj -[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/__/devicetree/src/dt.c.obj -[ 2%] Building C object pmsis/CMakeFiles/pmsis.dir/__/devicetree/fpv2/devicetree_fpv2.c.obj -[ 2%] Linking C static library ../lib/libpmsis.a -[ 6%] Built target pmsis -Scanning dependencies of target pmsis_backend -Consolidate compiler generated dependencies of target pmsis_backend -[ 7%] Built target pmsis_backend -Scanning dependencies of target freertos -Consolidate compiler generated dependencies of target freertos -[ 9%] Built target freertos -Consolidate compiler generated dependencies of target pulp-nn-mixed -[ 9%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_i2.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_i4.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_i8.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_u2.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_u4.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i2_u8.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_i2.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_i4.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_i8.c.obj -[ 10%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_u2.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_u4.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i4_u8.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_i2.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_i4.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_i8.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_u2.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_u4.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_i8_u8.c.obj -[ 11%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_i2.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_i4.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_i8.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_u2.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_u4.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u2_u8.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_i2.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_i4.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_i8.c.obj -[ 12%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_u2.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_u4.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u4_u8.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_i2.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_i4.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_i8.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_u2.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_u4.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i2_u8_u8.c.obj -[ 13%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_i2.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_i4.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_i8.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_u2.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_u4.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i2_u8.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_i2.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_i4.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_i8.c.obj -[ 14%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_u2.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_u4.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i4_u8.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_i2.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_i4.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_i8.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_u2.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_u4.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_i8_u8.c.obj -[ 15%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_i2.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_i4.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_i8.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_u2.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_u4.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u2_u8.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_i2.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_i4.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_i8.c.obj -[ 16%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_u2.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_u4.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u4_u8.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_i2.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_i4.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_i8.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_u2.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_u4.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i4_u8_u8.c.obj -[ 17%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_i2.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_i4.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_i8.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_u2.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_u4.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i2_u8.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_i2.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_i4.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_i8.c.obj -[ 18%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_u2.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_u4.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i4_u8.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_i2.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_i4.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_i8.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_u2.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_u4.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_i8_u8.c.obj -[ 19%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_i2.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_i4.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_i8.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_u2.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_u4.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u2_u8.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_i2.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_i4.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_i8.c.obj -[ 20%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_u2.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_u4.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u4_u8.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_i2.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_i4.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_i8.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_u2.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_u4.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_i8_u8_u8.c.obj -[ 21%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_i2.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_i4.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_i8.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_u2.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_u4.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i2_u8.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_i2.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_i4.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_i8.c.obj -[ 22%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_u2.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_u4.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i4_u8.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_i2.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_i4.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_i8.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_u2.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_u4.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_i8_u8.c.obj -[ 23%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_i2.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_i4.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_i8.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_u2.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_u4.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u2_u8.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_i2.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_i4.c.obj -[ 24%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_i8.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_u2.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_u4.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u4_u8.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_i2.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_i4.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_i8.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_u2.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_u4.c.obj -[ 25%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u2_u8_u8.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_i2.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_i4.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_i8.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_u2.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_u4.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i2_u8.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_i2.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_i4.c.obj -[ 26%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_i8.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_u2.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_u4.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i4_u8.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_i2.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_i4.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_i8.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_u2.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_u4.c.obj -[ 27%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_i8_u8.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_i2.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_i4.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_i8.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_u2.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_u4.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u2_u8.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4.c.obj -[ 28%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_i2.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_i4.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_i8.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_u2.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_u4.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u4_u8.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_i2.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_i4.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_i8.c.obj -[ 29%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_u2.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_u4.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u4_u8_u8.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_i2.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_i4.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_i8.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_u2.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_u4.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i2_u8.c.obj -[ 30%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_i2.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_i4.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_i8.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_u2.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_u4.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i4_u8.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_i2.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_i4.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_i8.c.obj -[ 31%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_u2.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_u4.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_i8_u8.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_i2.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_i4.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_i8.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_u2.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_u4.c.obj -[ 32%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u2_u8.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_i2.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_i4.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_i8.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_u2.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_u4.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u4_u8.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8.c.obj -[ 33%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_i2.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_i4.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_i8.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_u2.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_u4.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Add/pulp_nn_add_u8_u8_u8.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i2_i2.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i2_i4.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i2_i8.c.obj -[ 34%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i4_i2.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i4_i4.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i4_i8.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i8_i2.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i8_i4.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_i8_i8.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u2_i2.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u2_i4.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u2_i8.c.obj -[ 35%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u4_i2.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u4_i4.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u4_i8.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u8_i2.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u8_i4.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i2_u8_i8.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i2_i2.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i2_i4.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i2_i8.c.obj -[ 36%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i4_i2.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i4_i4.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i4_i8.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i8_i2.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i8_i4.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_i8_i8.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u2_i2.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u2_i4.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u2_i8.c.obj -[ 37%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u4_i2.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u4_i4.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u4_i8.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u8_i2.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u8_i4.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i4_u8_i8.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i2_i2.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i2_i4.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i2_i8.c.obj -[ 38%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i4_i2.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i4_i4.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i4_i8.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i8_i2.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i8_i4.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_i8_i8.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u2_i2.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u2_i4.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u2_i8.c.obj -[ 39%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u4_i2.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u4_i4.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u4_i8.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u8_i2.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u8_i4.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_i8_u8_i8.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i2_i2.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i2_i4.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i2_i8.c.obj -[ 40%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i4_i2.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i4_i4.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i4_i8.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i8_i2.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i8_i4.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_i8_i8.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u2_i2.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u2_i4.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u2_i8.c.obj -[ 41%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u4_i2.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u4_i4.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u4_i8.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u8_i2.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u8_i4.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u2_u8_i8.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i2_i2.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i2_i4.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i2_i8.c.obj -[ 42%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i4_i2.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i4_i4.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i4_i8.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i8_i2.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i8_i4.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_i8_i8.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u2_i2.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u2_i4.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u2_i8.c.obj -[ 43%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u4_i2.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u4_i4.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u4_i8.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u8_i2.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u8_i4.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u4_u8_i8.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i2_i2.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i2_i4.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i2_i8.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i4_i2.c.obj -[ 44%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i4_i4.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i4_i8.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i8_i2.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i8_i4.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_i8_i8.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u2_i2.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u2_i4.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u2_i8.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u4_i2.c.obj -[ 45%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u4_i4.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u4_i8.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u8_i2.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u8_i4.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Convolution/pulp_nn_conv_u8_u8_i8.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i2_i2.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i2_i4.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i2_i8.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i4_i2.c.obj -[ 46%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i4_i4.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i4_i8.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i8_i2.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i8_i4.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_i8_i8.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u2_i2.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u2_i4.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u2_i8.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u4_i2.c.obj -[ 47%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u4_i4.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u4_i8.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u8_i2.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u8_i4.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i2_u8_i8.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i2_i2.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i2_i4.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i2_i8.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i4_i2.c.obj -[ 48%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i4_i4.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i4_i8.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i8_i2.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i8_i4.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_i8_i8.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u2_i2.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u2_i4.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u2_i8.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u4_i2.c.obj -[ 50%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u4_i4.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u4_i8.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u8_i2.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u8_i4.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i4_u8_i8.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i2_i2.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i2_i4.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i2_i8.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i4_i2.c.obj -[ 51%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i4_i4.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i4_i8.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i8_i2.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i8_i4.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_i8_i8.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u2_i2.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u2_i4.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u2_i8.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u4_i2.c.obj -[ 52%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u4_i4.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u4_i8.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u8_i2.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u8_i4.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_i8_u8_i8.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i2_i2.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i2_i4.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i2_i8.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i4_i2.c.obj -[ 53%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i4_i4.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i4_i8.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i8_i2.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i8_i4.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_i8_i8.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u2_i2.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u2_i4.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u2_i8.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u4_i2.c.obj -[ 54%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u4_i4.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u4_i8.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u8_i2.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u8_i4.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u2_u8_i8.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i2_i2.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i2_i4.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i2_i8.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i4_i2.c.obj -[ 55%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i4_i4.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i4_i8.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i8_i2.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i8_i4.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_i8_i8.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u2_i2.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u2_i4.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u2_i8.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u4_i2.c.obj -[ 56%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u4_i4.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u4_i8.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u8_i2.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u8_i4.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u4_u8_i8.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i2_i2.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i2_i4.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i2_i8.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i4_i2.c.obj -[ 57%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i4_i4.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i4_i8.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i8_i2.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i8_i4.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_i8_i8.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u2_i2.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u2_i4.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u2_i8.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u4_i2.c.obj -[ 58%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u4_i4.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u4_i8.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u8_i2.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u8_i4.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Depthwise/pulp_nn_depthwise_u8_u8_i8.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i2_i32_i2.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i2_i32_i4.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i2_i32_i8.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i4_i32_i2.c.obj -[ 59%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i4_i32_i4.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i4_i32_i8.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i8_i32_i2.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i8_i32_i4.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_i8_i32_i8.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u2_i32_i2.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u2_i32_i4.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u2_i32_i8.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u4_i32_i2.c.obj -[ 60%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u4_i32_i4.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u4_i32_i8.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u8_i32_i2.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u8_i32_i4.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearNoQuant/pulp_nn_linear_u8_i32_i8.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i2_i2.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i2_i4.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i2_i8.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i4_i2.c.obj -[ 61%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i4_i4.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i4_i8.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i8_i2.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i8_i4.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_i8_i8.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u2_i2.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u2_i4.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u2_i8.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u4_i2.c.obj -[ 62%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u4_i4.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u4_i8.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u8_i2.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u8_i4.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i2_u8_i8.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i2_i2.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i2_i4.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i2_i8.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i4_i2.c.obj -[ 63%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i4_i4.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i4_i8.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i8_i2.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i8_i4.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_i8_i8.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u2_i2.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u2_i4.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u2_i8.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u4_i2.c.obj -[ 64%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u4_i4.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u4_i8.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u8_i2.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u8_i4.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i4_u8_i8.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i2_i2.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i2_i4.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i2_i8.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i4_i2.c.obj -[ 65%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i4_i4.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i4_i8.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i8_i2.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i8_i4.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_i8_i8.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u2_i2.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u2_i4.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u2_i8.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u4_i2.c.obj -[ 66%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u4_i4.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u4_i8.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u8_i2.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u8_i4.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_i8_u8_i8.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i2_i2.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i2_i4.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i2_i8.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i4_i2.c.obj -[ 67%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i4_i4.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i4_i8.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i8_i2.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i8_i4.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_i8_i8.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u2_i2.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u2_i4.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u2_i8.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u4_i2.c.obj -[ 68%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u4_i4.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u4_i8.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u8_i2.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u8_i4.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u2_u8_i8.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i2_i2.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i2_i4.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i2_i8.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i4_i2.c.obj -[ 69%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i4_i4.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i4_i8.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i8_i2.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i8_i4.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_i8_i8.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u2_i2.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u2_i4.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u2_i8.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u4_i2.c.obj -[ 70%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u4_i4.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u4_i8.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u8_i2.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u8_i4.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u4_u8_i8.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i2_i2.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i2_i4.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i2_i8.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i4_i2.c.obj -[ 71%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i4_i4.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i4_i8.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i8_i2.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i8_i4.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_i8_i8.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u2_i2.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u2_i4.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u2_i8.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u4_i2.c.obj -[ 72%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u4_i4.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u4_i8.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u8_i2.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u8_i4.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/LinearQuant/pulp_nn_linear_u8_u8_i8.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i2_i2.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i2_i4.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i2_i8.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i4_i2.c.obj -[ 73%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i4_i4.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i4_i8.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i8_i2.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i8_i4.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_i8_i8.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u2_i2.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u2_i4.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u2_i8.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u4_i2.c.obj -[ 74%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u4_i4.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u4_i8.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u8_i2.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u8_i4.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_i8_u8_i8.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i2_i2.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i2_i4.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i2_i8.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i4_i2.c.obj -[ 75%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i4_i4.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i4_i8.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i8_i2.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i8_i4.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_i8_i8.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u2_i2.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u2_i4.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u2_i8.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u4_i2.c.obj -[ 76%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u4_i4.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u4_i8.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u8_i2.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u8_i4.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/MatrixMultiplication/pulp_nn_matmul_u8_u8_i8.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i2_i2.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i2_i4.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i2_i8.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i4_i2.c.obj -[ 77%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i4_i4.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i4_i8.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i8_i2.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i8_i4.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_i8_i8.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u2_i2.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u2_i4.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u2_i8.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u4_i2.c.obj -[ 78%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u4_i4.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u4_i8.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u8_i2.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u8_i4.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i2_u8_i8.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i2_i2.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i2_i4.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i2_i8.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i4_i2.c.obj -[ 79%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i4_i4.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i4_i8.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i8_i2.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i8_i4.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_i8_i8.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u2_i2.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u2_i4.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u2_i8.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u4_i2.c.obj -[ 80%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u4_i4.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u4_i8.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u8_i2.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u8_i4.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i4_u8_i8.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i2_i2.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i2_i4.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i2_i8.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i4_i2.c.obj -[ 81%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i4_i4.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i4_i8.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i8_i2.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i8_i4.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_i8_i8.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u2_i2.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u2_i4.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u2_i8.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u4_i2.c.obj -[ 82%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u4_i4.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u4_i8.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u8_i2.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u8_i4.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_i8_u8_i8.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i2_i2.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i2_i4.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i2_i8.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i4_i2.c.obj -[ 83%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i4_i4.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i4_i8.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i8_i2.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i8_i4.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_i8_i8.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u2_i2.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u2_i4.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u2_i8.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u4_i2.c.obj -[ 84%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u4_i4.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u4_i8.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u8_i2.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u8_i4.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u2_u8_i8.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i2_i2.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i2_i4.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i2_i8.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i4_i2.c.obj -[ 85%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i4_i4.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i4_i8.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i8_i2.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i8_i4.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_i8_i8.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u2_i2.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u2_i4.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u2_i8.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u4_i2.c.obj -[ 86%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u4_i4.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u4_i8.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u8_i2.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u8_i4.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u4_u8_i8.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i2_i2.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i2_i4.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i2_i8.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i4_i2.c.obj -[ 87%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i4_i4.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i4_i8.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i8_i2.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i8_i4.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_i8_i8.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u2_i2.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u2_i4.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u2_i8.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u4_i2.c.obj -[ 88%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u4_i4.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u4_i8.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u8_i2.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u8_i4.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pointwise/pulp_nn_pointwise_u8_u8_i8.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_i2.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_i4.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_i8.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_u2.c.obj -[ 89%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_u4.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i2_u8.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_i2.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_i4.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_i8.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_u2.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_u4.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i4_u8.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_i2.c.obj -[ 90%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_i4.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_i8.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_u2.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_u4.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_i8_u8.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_i2.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_i4.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_i8.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_u2.c.obj -[ 91%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_u4.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u2_u8.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_i2.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_i4.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_i8.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_u2.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_u4.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u4_u8.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_i2.c.obj -[ 92%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_i4.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_i8.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_u2.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_u4.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/AvgPool/pulp_nn_avgpool_u8_u8.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_i2.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_i4.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_i8.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_u2.c.obj -[ 93%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_u4.c.obj -[ 94%] Building C object TargetLibraries/GAP9/third_party/pulp-nn-mixed/CMakeFiles/pulp-nn-mixed.dir/XpulpV2/32bit/src/Pooling/MaxPool/pulp_nn_maxpool_u8.c.obj -[ 94%] Linking C static library ../../../../lib/libpulp-nn-mixed.a -[ 94%] Built target pulp-nn-mixed -Consolidate compiler generated dependencies of target deeploybasic -[ 97%] Built target deeploybasic -Consolidate compiler generated dependencies of target deeploygap9 -[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/src/Util.c.obj -[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/src/dory_dma.c.obj -[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/src/dory_mem.c.obj -[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Convolution_fp32.c.obj -[ 97%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/DWConvolution_fp32.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/GELU.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Gemm.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Layernorm.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Matmul.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/MaxPool.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/RQiHardswish.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Relu.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/RequantShift.c.obj -[ 98%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Softmax.c.obj -[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/UniformRequantShift.c.obj -[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/Util.c.obj -[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/gemv.c.obj -[100%] Building C object TargetLibraries/GAP9/CMakeFiles/deeploygap9.dir/__/PULPOpen/src/iRMSnorm.c.obj -[100%] Linking C static library ../../lib/libdeeploygap9.a -[100%] Built target deeploygap9 -Consolidate compiler generated dependencies of target network -[100%] Building C object DeeployTest/CMakeFiles/network.dir/TEST_GAP9/Tests/testFloatMatmul/Network.c.obj -[100%] Built target network -Consolidate compiler generated dependencies of target testFloatMatmul -[100%] Building C object DeeployTest/Platforms/GAP9/CMakeFiles/testFloatMatmul.dir/src/CycleCounter.c.obj -[100%] Building C object DeeployTest/Platforms/GAP9/CMakeFiles/testFloatMatmul.dir/src/deeploytest.c.obj -[100%] Linking C executable ../../../testFloatMatmul -[100%] Built target testFloatMatmul -[ 0%] Built target pmsis_printf -[ 0%] Built target pulp_allocator -[ 0%] Built target freertos_libs -[ 1%] Built target fll_pmu_lib -Consolidate compiler generated dependencies of target pmsis -[ 6%] Built target pmsis -[ 7%] Built target pmsis_backend -[ 9%] Built target freertos -Consolidate compiler generated dependencies of target pulp-nn-mixed -[ 94%] Built target pulp-nn-mixed -[ 97%] Built target deeploybasic -Consolidate compiler generated dependencies of target deeploygap9 -[100%] Built target deeploygap9 -Consolidate compiler generated dependencies of target network -[100%] Built target network -Consolidate compiler generated dependencies of target testFloatMatmul -[100%] Built target testFloatMatmul -[100%] Built target image -Generation Directory: /app/Deeploy/DeeployTest/TEST_GAP9/Tests/testFloatMatmul -Test Directory : Tests/testFloatMatmul -Test Name : testFloatMatmul diff --git a/TargetLibraries/GAP9/inc/DeeployMchan.h b/TargetLibraries/GAP9/inc/DeeployMchan.h index f4822070fc..0f1110af69 100644 --- a/TargetLibraries/GAP9/inc/DeeployMchan.h +++ b/TargetLibraries/GAP9/inc/DeeployMchan.h @@ -10,8 +10,8 @@ /* * GAP9 MCHAN v7 configuration wrapper for Deeploy * - * This header configures and includes mchan.h with proper GAP9-specific settings. - * Based on DORY's GAP9 DMA implementation. + * This header configures and includes mchan.h with proper GAP9-specific + * settings. Based on DORY's GAP9 DMA implementation. */ #include "pmsis.h" @@ -34,7 +34,7 @@ // Define event bit for cluster DMA #ifdef MCHAN_EVENT #ifndef MCHAN_EVENT_BIT -#define MCHAN_EVENT_BIT (CLUSTER_IRQ_DMA0) // Typically 8 +#define MCHAN_EVENT_BIT (CLUSTER_IRQ_DMA0) // Typically 8 #endif #endif diff --git a/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h b/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h index 55bb28fb08..cb56152bd6 100644 --- a/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h +++ b/TargetLibraries/PULPOpen/inc/kernel/Layernorm.h @@ -10,8 +10,7 @@ #include "DeeployPULPMath.h" void PULP_Layernorm_fp32_fp32(float32_t *data_in, float32_t *data_out, - float32_t *scale, float32_t *bias, - uint32_t size, + float32_t *scale, float32_t *bias, uint32_t size, uint32_t lastDimLength, float32_t epsilon); #endif // __DEEPLOY_MATH_LAYERNORM_KERNEL_HEADER__ \ No newline at end of file diff --git a/TargetLibraries/PULPOpen/src/Layernorm.c b/TargetLibraries/PULPOpen/src/Layernorm.c index e8829e4e1e..9324ff19ee 100644 --- a/TargetLibraries/PULPOpen/src/Layernorm.c +++ b/TargetLibraries/PULPOpen/src/Layernorm.c @@ -11,8 +11,7 @@ #include void PULP_Layernorm_fp32_fp32(float32_t *data_in, float32_t *data_out, - float32_t *scale, float32_t *bias, - uint32_t size, + float32_t *scale, float32_t *bias, uint32_t size, uint32_t lastDimLength, float32_t epsilon) { int8_t core_id = pi_core_id();