diff --git a/aidge_export_arm_cortexm/kernels/Activation/Atan/aidge_atan_float32.c b/aidge_export_arm_cortexm/kernels/Activation/Atan/aidge_atan_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..469f3aec9364ea16c715cbf39e6e9d31213c246e
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/Activation/Atan/aidge_atan_float32.c
@@ -0,0 +1,10 @@
+#include <math.h>
+
+void aidge_atan_float32 (float* input,
+                         float* output,
+                         unsigned int size)
+{
+    for (unsigned int i = 0; i < size; ++i) {
+        output[i] = atanf(input[i]);
+    }
+}
diff --git a/aidge_export_arm_cortexm/kernels/Activation/Relu/aidge_relu_float32.c b/aidge_export_arm_cortexm/kernels/Activation/Relu/aidge_relu_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..d25e6c1bc0d12c004fac2dd46d5cfcfbe65523ac
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/Activation/Relu/aidge_relu_float32.c
@@ -0,0 +1,12 @@
+
+
+
+void aidge_relu_float32 (float* inputs, 
+                         float* outputs,
+                         unsigned int size)
+{
+    for (unsigned int i = 0; i < size; ++i) {
+        if (inputs[i] < 0.0f) 
+            outputs[i] = 0.0f;
+    }
+}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/kernels/Concat/aidge_concat_float32.c b/aidge_export_arm_cortexm/kernels/Concat/aidge_concat_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..c07337c8a0b558f7847a4f9931e5cce2c2656842
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/Concat/aidge_concat_float32.c
@@ -0,0 +1,9 @@
+#include <stdarg.h>
+
+void aidge_concat_float32 (unsigned int axis,
+                           float* output,
+                           float* input1,
+                           float* input2)
+{
+    // TODO
+}
diff --git a/aidge_export_arm_cortexm/kernels/ElemWise/Add/aidge_add_float32.c b/aidge_export_arm_cortexm/kernels/ElemWise/Add/aidge_add_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..4250e6ef515b1090281f2b816a5c1b1b70643e7d
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/ElemWise/Add/aidge_add_float32.c
@@ -0,0 +1,11 @@
+
+
+void aidge_mul_float32(float* input_a, 
+                       float* input_b, 
+                       float* output, 
+                       unsigned int size)
+{
+    for (unsigned int i = 0; i < size; ++i) {
+        output[i] = input_a[i] + input_b[i];
+    }
+}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/kernels/ElemWise/Div/aidge_div_float32.c b/aidge_export_arm_cortexm/kernels/ElemWise/Div/aidge_div_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..fed39b09591f877d77ebbc404434384bb3ce44ee
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/ElemWise/Div/aidge_div_float32.c
@@ -0,0 +1,11 @@
+
+
+void aidge_mul_float32(float* input_a, 
+                       float* input_b, 
+                       float* output, 
+                       unsigned int size)
+{
+    for (unsigned int i = 0; i < size; ++i) {
+        output[i] = input_a[i] / input_b[i];
+    }
+}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/kernels/ElemWise/Mul/aidge_mul_float32.c b/aidge_export_arm_cortexm/kernels/ElemWise/Mul/aidge_mul_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..28c22ab6c1a1575a4e3d48d6a0f4fb1dcc90d797
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/ElemWise/Mul/aidge_mul_float32.c
@@ -0,0 +1,11 @@
+
+
+void aidge_mul_float32(float* input_a, 
+                       float* input_b, 
+                       float* output, 
+                       unsigned int size)
+{
+    for (unsigned int i = 0; i < size; ++i) {
+        output[i] = input_a[i] * input_b[i];
+    }
+}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/kernels/ElemWise/Sub/aidge_sub_float32.c b/aidge_export_arm_cortexm/kernels/ElemWise/Sub/aidge_sub_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..1f4f7d798eedcb9d4504087ba02179203ee46772
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/ElemWise/Sub/aidge_sub_float32.c
@@ -0,0 +1,11 @@
+
+
+void aidge_sub_float32(float* input_a, 
+                       float* input_b, 
+                       float* output, 
+                       unsigned int size)
+{
+    for (unsigned int i = 0; i < size; ++i) {
+        output[i] = input_a[i] - input_b[i];
+    }
+}
\ No newline at end of file
diff --git a/aidge_export_arm_cortexm/kernels/FullyConnected/aidge_fc_float32.c b/aidge_export_arm_cortexm/kernels/FullyConnected/aidge_fc_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..a38efabdcdacde1c0b457232e655a877b6f3ac63
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/FullyConnected/aidge_fc_float32.c
@@ -0,0 +1,21 @@
+
+
+void aidge_fc_float32 (float* inputs,
+                       float* weights,
+                       float* biases,
+                       float* outputs,
+                       unsigned int nb_inputs,
+                       unsigned int nb_outputs)
+{
+    for (unsigned int out = 0; out < nb_outputs; ++out) {
+        // Init with bias
+        float accum = biases[out]; 
+
+        for (unsigned int in = 0; in < nb_inputs; ++in) {
+            accum += inputs[in] * weights[out * nb_inputs + in];
+        }
+
+        // Store result
+        outputs[out] = accum;
+    }
+}
diff --git a/aidge_export_arm_cortexm/kernels/Slice/aidge_slice_float32.c b/aidge_export_arm_cortexm/kernels/Slice/aidge_slice_float32.c
new file mode 100644
index 0000000000000000000000000000000000000000..2be1346d86fce8a6fd40fbdabd51b5aff7fd610a
--- /dev/null
+++ b/aidge_export_arm_cortexm/kernels/Slice/aidge_slice_float32.c
@@ -0,0 +1,11 @@
+
+
+void aidge_slice_float32 (float* inputs, 
+                          float* outputs, 
+                          int* axes, 
+                          int* starts, 
+                          int* ends,
+                          unsigned int nb_axes)
+{
+    
+}
\ No newline at end of file