From dcbb32b3ecdaaf8d711e5c0a534c4c3b47394008 Mon Sep 17 00:00:00 2001
From: cmoineau <cyril.moineau@cea.fr>
Date: Wed, 25 Sep 2024 07:53:01 +0000
Subject: [PATCH] Add concat operator to arm export.

---
 ..._concat_float32.c => aidge_concat_float32.hpp} |  0
 .../templates/configuration/concat.jinja          | 15 ++++++---------
 .../templates/forward_call/concat.jinja           | 10 +++++-----
 aidge_export_arm_cortexm/operators.py             | 13 ++++++++++++-
 4 files changed, 23 insertions(+), 15 deletions(-)
 rename aidge_export_arm_cortexm/_Aidge_Arm/kernels/Concat/{aidge_concat_float32.c => aidge_concat_float32.hpp} (100%)

diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Concat/aidge_concat_float32.c b/aidge_export_arm_cortexm/_Aidge_Arm/kernels/Concat/aidge_concat_float32.hpp
similarity index 100%
rename from aidge_export_arm_cortexm/_Aidge_Arm/kernels/Concat/aidge_concat_float32.c
rename to aidge_export_arm_cortexm/_Aidge_Arm/kernels/Concat/aidge_concat_float32.hpp
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/concat.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/concat.jinja
index d819f59..8aa6315 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/concat.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/configuration/concat.jinja
@@ -2,17 +2,14 @@
 #ifndef {{ name|upper }}_LAYER_H
 #define {{ name|upper }}_LAYER_H
 
-/* Concat layer */
-
-{# For layer configuration -#}
-#define {{ name|upper }}_NB_INPUTS {{ nb_inputs }}
+{% include "./_meminfo.jinja" %}
 
+// Attributes
+#define {{ name|upper }}_NB_INPUTS {{ nb_in }}
 #define {{ name|upper }}_AXIS {{ axis }}
-
-{%- for i in range(nb_inputs) %}
-#define {{ name|upper }}_INPUT{{i}}_SIZE {{ list_input_size[i] }}
+{%- for i in range(nb_in) %}
+#define {{ name|upper }}_INPUT_{{i}}_SIZE {{ in_chan[i] * in_height[i] * in_width[i] }}
 {%- endfor %}
-
-#define {{ name|upper }}_OUTPUT_SIZE {{ output_size }}
+#define {{ name|upper }}_OUTPUT_SIZE {{ out_chan[0] * out_height[0] * out_width[0] }}
 
 #endif /* {{ name|upper }}_LAYER_H */
diff --git a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/concat.jinja b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/concat.jinja
index af6999b..385f92c 100644
--- a/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/concat.jinja
+++ b/aidge_export_arm_cortexm/_Aidge_Arm/templates/forward_call/concat.jinja
@@ -1,6 +1,6 @@
-aidge_concat{{nb_inputs}}_{{dataformat}} (
-    {{name|upper}}_AXIS,  
-    {%- for i in range(nb_inputs) -%}
-     {{list_in_names[i]}}, {{ name|upper }}_INPUT{{i}}_SIZE,
+aidge_concat{{ nb_in }}_float32 (
+    {{name|upper}}_AXIS,
+    {%- for i in range(nb_in) -%}
+     {{ in_name[i]|upper }}, {{ name|upper }}_INPUT_{{i}}_SIZE,
     {%- endfor -%}
-    {{output_name}});
\ No newline at end of file
+    {{ out_name[0]|upper }});
diff --git a/aidge_export_arm_cortexm/operators.py b/aidge_export_arm_cortexm/operators.py
index 8653329..c413041 100644
--- a/aidge_export_arm_cortexm/operators.py
+++ b/aidge_export_arm_cortexm/operators.py
@@ -387,7 +387,7 @@ class Atan_ARMCortexM(ExportNodeCpp):
 
 
 @ExportLibAidgeARM.register("Slice", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
-class Atan_ARMCortexM(ExportNodeCpp):
+class Slice_ARMCortexM(ExportNodeCpp):
     def __init__(self, node, mem_info, is_input, is_output):
         super().__init__(node, mem_info, is_input, is_output)
 
@@ -398,6 +398,17 @@ class Atan_ARMCortexM(ExportNodeCpp):
             str(ROOT / "_Aidge_Arm" / "kernels" / "Slice" / "aidge_slice_float32.hpp"),
         ]
 
+@ExportLibAidgeARM.register("Concat", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
+class Concat_ARMCortexM(ExportNodeCpp):
+    def __init__(self, node, mem_info, is_input, is_output):
+        super().__init__(node, mem_info, is_input, is_output)
+
+        self.config_template = str(ROOT / "_Aidge_Arm" / "templates" / "configuration" / "concat.jinja")
+        self.forward_template = str(ROOT / "_Aidge_Arm" / "templates" / "forward_call" / "concat.jinja")
+        self.include_list = []
+        self.kernels_to_copy = [
+            str(ROOT / "_Aidge_Arm" / "kernels" / "Concat" / "aidge_concat_float32.hpp"),
+        ]
 
 @ExportLibAidgeARM.register("Sigmoid", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))
 class Sigmoid_ARMCortexM(ExportNodeCpp):
-- 
GitLab