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