Edge AI Add-on API 2.3.0
Loading...
Searching...
No Matches
nrf_axon_dsp_intrinsics.h
Go to the documentation of this file.
1/*
2* Copyright (c) 2025-26 Nordic Semiconductor ASA
3*
4* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5*/
6
14#pragma once
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#include <stdint.h>
21#include <stdbool.h>
22#include "nrf_axon_driver.h"
23
24#define NRF_AXON_DSP_VECTOR_MULTIPLE (4)
25
30#define NRF_AXON_DSP_VECTOR_LENGTH_CEIL(vector_length) (NRF_AXON_DSP_VECTOR_MULTIPLE * \
31 (((vector_length)+NRF_AXON_DSP_VECTOR_MULTIPLE-1)/NRF_AXON_DSP_VECTOR_MULTIPLE))
32
42
65 const int32_t *in_ptr,
66 int32_t *out_ptr,
67 uint16_t length_log2,
68 bool half_output,
69 bool round_by_length_log2,
71 bool keep_reservation);
72
95 const int32_t *in_ptr,
96 int32_t *out_ptr,
97 uint16_t length_log2,
98 bool half_output,
99 uint8_t rounding_bits,
101 bool keep_reservation);
102
128 const int32_t *in_ptr,
129 const int32_t *filter_ptr,
130 int32_t *out_ptr,
131 uint16_t input_length,
132 uint16_t filter_length,
133 uint8_t rounding_bits,
135 bool keep_reservation);
136
163 const int32_t *in_ptr,
164 const int16_t *filter_ptr,
165 int32_t *out_ptr,
166 uint16_t input_length,
167 uint16_t filter_length,
168 uint8_t rounding_bits,
170 bool keep_reservation);
189 const int32_t *in_ptr,
190 int32_t *out_ptr,
191 uint16_t length,
193 bool keep_reservation);
194
217 const int32_t *in_ptr,
218 int32_t *out_ptr,
219 uint16_t length,
221 bool keep_reservation);
222
246 const int32_t *in_ptr,
247 int32_t *out_ptr,
248 uint16_t length,
250 bool keep_reservation);
251
272 const int32_t *x_ptr,
273 const int32_t *y_ptr,
274 int32_t *out_ptr,
275 uint16_t length,
276 uint8_t rounding_bits,
278 bool keep_reservation);
279
302 const int32_t *x_ptr,
303 const int32_t *y_ptr,
304 int32_t *out_ptr,
305 uint16_t length,
306 uint8_t rounding_bits,
308 bool keep_reservation);
309
334 const int32_t *x_ptr,
335 const int32_t *y_ptr,
336 int32_t *out_ptr,
337 uint16_t length,
338 uint8_t rounding_bits,
340 bool keep_reservation);
341
364 const int32_t *x_ptr,
365 const int32_t *y_ptr,
366 int32_t *out_ptr,
367 uint16_t length,
368 uint8_t rounding_bits,
370 bool keep_reservation);
371
393 const int32_t *x_ptr,
394 const int32_t *y_ptr,
395 int32_t *out_ptr,
396 uint16_t length,
397 uint8_t rounding_bits,
399 bool keep_reservation);
400
422 const int32_t *x_ptr,
423 const int32_t *y_ptr,
424 int32_t *out_ptr,
425 uint16_t length,
426 uint8_t rounding_bits,
428 bool keep_reservation);
429
451 const int32_t *x_ptr,
452 const int32_t *y_ptr,
453 int32_t *out_ptr,
454 uint16_t length,
455 uint8_t rounding_bits,
457 bool keep_reservation);
458
481 const int32_t *x_ptr,
482 const int32_t *a_scalar,
483 const int32_t *b_scalar,
484 int32_t *output,
485 uint16_t length,
486 uint8_t rounding_bits,
488 bool keep_reservation);
489
520 const int8_t *x_ptr,
521 int32_t a_scalar,
522 int32_t b_scalar,
523 int16_t *output,
524 uint16_t height,
525 uint16_t width,
526 bool input_is_packed,
527 uint8_t rounding_bits,
529 bool keep_reservation);
560 const int16_t *x_ptr,
561 int32_t a_scalar,
562 int32_t b_scalar,
563 int16_t *output,
564 uint16_t height,
565 uint16_t width,
566 bool input_is_packed,
567 uint8_t rounding_bits,
569 bool keep_reservation);
570
595 const int32_t *x_ptr,
596 const int32_t *y_ptr,
597 const int32_t *a_scalar,
598 const int32_t *b_scalar,
599 int32_t *out_ptr,
600 uint16_t length,
601 uint8_t rounding_bits,
603 bool keep_reservation);
604
625 const int32_t *x_ptr,
626 int32_t *out_ptr,
627 uint16_t length,
628 uint8_t rounding_bits,
630 bool keep_reservation);
631
653 const int32_t *x_ptr,
654 const int32_t *y_ptr,
655 int32_t *out_ptr,
656 uint16_t length,
657 uint8_t rounding_bits,
659 bool keep_reservation);
660
682 const int16_t *x_ptr,
683 const int32_t *y_ptr,
684 int32_t *out_ptr,
685 uint16_t length,
686 uint8_t rounding_bits,
688 bool keep_reservation);
689
711 const int16_t *x_ptr,
712 const int16_t *y_ptr,
713 int32_t *out_ptr,
714 uint16_t length,
715 uint8_t rounding_bits,
717 bool keep_reservation);
718
740 const int32_t *x_ptr,
741 const int32_t *y_ptr,
742 int32_t *out_ptr,
743 uint16_t length,
744 uint8_t rounding_bits,
746 bool keep_reservation);
747
769 const int16_t *x_ptr,
770 const int32_t *y_ptr,
771 int32_t *out_ptr,
772 uint16_t length,
773 uint8_t rounding_bits,
775 bool keep_reservation);
776
798 const int16_t *x_ptr,
799 const int16_t *y_ptr,
800 int32_t *out_ptr,
801 uint16_t length,
802 uint8_t rounding_bits,
804 bool keep_reservation);
805
828 const int32_t *x_ptr,
829 int32_t *out_ptr,
830 uint16_t length,
831 uint8_t rounding_bits,
833 bool keep_reservation);
834
856 const int16_t *x_ptr,
857 int32_t *out_ptr,
858 uint16_t length,
859 uint8_t rounding_bits,
861 bool keep_reservation);
862
884 const int32_t *x_ptr,
885 int32_t *out_ptr,
886 uint16_t length,
887 uint8_t rounding_bits,
889 bool keep_reservation);
890
912 const int16_t *x_ptr,
913 int32_t *out_ptr,
914 uint16_t length,
915 uint8_t rounding_bits,
917 bool keep_reservation);
918
919
939 const int32_t *x_ptr,
940 int32_t *out_ptr,
941 uint16_t length,
942 uint8_t rounding_bits,
944 bool keep_reservation);
945
965 const int16_t *x_ptr,
966 int32_t *out_ptr,
967 uint16_t length,
968 uint8_t rounding_bits,
970 bool keep_reservation);
971
991 const int32_t *x_ptr,
992 int32_t *out_ptr,
993 uint16_t length,
994 uint8_t rounding_bits,
996 bool keep_reservation);
997
1017 const int16_t *x_ptr,
1018 int32_t *out_ptr,
1019 uint16_t length,
1020 uint8_t rounding_bits,
1022 bool keep_reservation);
1023
1043 const int32_t *x_ptr,
1044 int32_t *out_ptr,
1045 uint16_t length,
1046 uint8_t rounding_bits,
1048 bool keep_reservation);
1049
1069 const int16_t *x_ptr,
1070 int32_t *out_ptr,
1071 uint16_t length,
1072 uint8_t rounding_bits,
1074 bool keep_reservation);
1075
1095 const int32_t *x_ptr,
1096 int32_t *out_ptr,
1097 uint16_t length,
1098 uint8_t rounding_bits,
1100 bool keep_reservation);
1101
1121 const int16_t *x_ptr,
1122 int32_t *out_ptr,
1123 uint16_t length,
1124 uint8_t rounding_bits,
1126 bool keep_reservation);
1127
1146 const int16_t *x_ptr,
1147 const int16_t *y_ptr,
1148 int32_t *out_ptr,
1149 uint16_t length,
1150 uint8_t rounding_bits,
1152 bool keep_reservation);
1153
1183 const int16_t *x_ptr,
1184 const int16_t *y_ptr,
1185 int32_t *out_ptr,
1186 uint16_t length,
1187 uint8_t rounding_bits,
1188 uint8_t output_extra_stride,
1190 bool keep_reservation);
1191
1215 int16_t set_val,
1216 int32_t *out_ptr,
1217 uint16_t length,
1218 uint8_t output_extra_stride,
1220 bool keep_reservation);
1221
1238 const int32_t *x_ptr,
1239 int32_t *out_ptr,
1240 uint16_t length,
1242 bool keep_reservation);
1243
1261 const int32_t *in_ptr,
1262 int8_t *out_ptr,
1263 uint16_t length,
1265 bool keep_reservation);
1266
1305 const int16_t *input_ptr,
1306 const int16_t *filter_ptr,
1307 int32_t *out_ptr,
1308 uint16_t input_height,
1309 uint16_t filter_height,
1310 uint16_t decimate_width,
1311 uint8_t rounding_bits,
1313 bool keep_reservation);
1314
1353 const int16_t *input_ptr,
1354 const int16_t *filter_ptr,
1355 int32_t *out_ptr,
1356 uint16_t input_height,
1357 uint16_t filter_height,
1358 uint16_t decimate_width,
1359 uint8_t rounding_bits,
1361 bool keep_reservation);
1362
1397 const int16_t *input_ptr,
1398 const int16_t *filter_ptr,
1399 int32_t *out_ptr,
1400 uint16_t input_length,
1401 uint16_t filter_length,
1402 uint16_t decimate,
1403 uint8_t rounding_bits,
1405 bool keep_reservation);
1406
1435 const int16_t *input_ptr,
1436 const int16_t *filter_ptr,
1437 int32_t *out_ptr,
1438 uint8_t rounding_bits,
1440 bool keep_reservation);
1441
1470 const int16_t *input_ptr,
1471 const int16_t *filter_ptr,
1472 int32_t *out_ptr,
1473 uint8_t rounding_bits,
1475 bool keep_reservation);
1476
1518 const int16_t *input_ptr,
1519 const int16_t *filter_ptr,
1520 int32_t *out_ptr,
1521 uint16_t input_height,
1522 uint16_t filter_height,
1523 uint16_t decimate_width,
1524 uint8_t rounding_bits,
1526 bool keep_reservation);
1527
1569 const int16_t *input_ptr,
1570 const int16_t *filter_ptr,
1571 int32_t *out_ptr,
1572 uint16_t input_height,
1573 uint16_t filter_height,
1574 uint16_t decimate_width,
1575 uint8_t rounding_bits,
1577 bool keep_reservation);
1578
1603 const int8_t *input_ptr,
1604 int8_t *out_ptr,
1605 uint16_t height,
1606 uint16_t width,
1608 bool keep_reservation);
1609
1610#ifdef __cplusplus
1611}
1612#endif
1613
nrf_axon_result_e nrf_axon_fir_cplx_2d_16_16_24_decimate(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint16_t input_height, uint16_t filter_height, uint16_t decimate_width, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter with decimation multiple and 2 sets of filter coeficients (...
nrf_axon_result_e nrf_axon_acc_24_24(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Acc" => "Accumulate" sums the elements in vector X
nrf_axon_result_e nrf_axon_axpb_2d_16_16(const int16_t *x_ptr, int32_t a_scalar, int32_t b_scalar, int16_t *output, uint16_t height, uint16_t width, bool input_is_packed, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"axpb"=>"a times x + b" Multiplies each vector value by "a" and adds "b" Input vector can be 2 dimens...
nrf_axon_result_e nrf_axon_marx_16_24(const int16_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Marx" => "Multiply, Accumulate, recursive, only reload the x vector" sums the products of elements i...
nrf_axon_result_e nrf_axon_l2norm_16_32(const int16_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"l2norm" => sums the square of the elements in vector X
nrf_axon_result_e nrf_axon_fir_2d_16_16_24_decimate(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint16_t input_height, uint16_t filter_height, uint16_t decimate_width, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter with decimation multiple. Filter coefficients are MAC'd wit...
nrf_axon_result_e nrf_axon_exp_11p12(const int32_t *in_ptr, int32_t *out_ptr, uint16_t length, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"exp"=> "exponent" (e to the x) Calculates the exponent of vector input, output=exp(input)....
nrf_axon_result_e nrf_axon_saturate_32_8(const int32_t *in_ptr, int8_t *out_ptr, uint16_t length, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
Saturates a 32bit vector to 8bits, unpacked.
nrf_axon_result_e nrf_axon_axpb_2d_8_16(const int8_t *x_ptr, int32_t a_scalar, int32_t b_scalar, int16_t *output, uint16_t height, uint16_t width, bool input_is_packed, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"axpb"=>"a times x + b" Multiplies each vector value by "a" and adds "b" Input vector can be 2 dimens...
nrf_axon_result_e nrf_axon_fir_16_16_32_decimate(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint16_t input_length, uint16_t filter_length, uint16_t decimate, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter with decimation multiple. Filter coefficients are MAC'd wit...
nrf_axon_result_e nrf_axon_saturate_32_24(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
Saturates a 32bit vector to 24bits, unpacked. Used to convert 32bit output into 24bit input needed by...
nrf_axon_result_e nrf_axon_fft_power_24(const int32_t *in_ptr, int32_t *out_ptr, uint16_t length_log2, bool half_output, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
Performs a 24bit (unpacked) complex FFT, then sums the squares of the complex coefficients,...
nrf_axon_result_e nrf_axon_axpb_24_24(const int32_t *x_ptr, const int32_t *a_scalar, const int32_t *b_scalar, int32_t *output, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"axpb"=>"a times x + b" Multiplies each vector value by "a" and adds "b"
nrf_axon_result_e nrf_axon_acc_16_24(const int16_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Acc" => "Accumulate" sums the elements in vector X
nrf_axon_result_e nrf_axon_mar_16_16_32(const int16_t *x_ptr, const int16_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Mar" => "Multiply, Accumulate, recursive" sums the products of elements in input vector X and input ...
nrf_axon_result_e nrf_axon_l2norm_24_24(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"l2norm" => sums the square of the elements in vector X
nrf_axon_result_e nrf_axon_xty_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Xty"=>"X Times Y " multiplies vector X and vector Y.
nrf_axon_result_e nrf_axon_xmy_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Xmy"=>"X Minus Y" subtracts vector Y from vector X.
nrf_axon_result_e nrf_axon_marx_24_32(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Marx" => "Multiply, Accumulate, recursive, only reload the x vector" sums the products of elements i...
nrf_axon_result_e nrf_axon_mar_16_16_24(const int16_t *x_ptr, const int16_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Mar" => "Multiply, Accumulate, recursive" sums the products of elements in input vector X and input ...
nrf_axon_result_e nrf_axon_xsmys_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Xsmys"=>"X Squared Minus Y Squared" subtracts the square of vector Y from the square of vector X.
nrf_axon_result_e nrf_axon_sqrt_24(const int32_t *in_ptr, int32_t *out_ptr, uint16_t length, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Sqrt"=> "Square Root" Calculates a the square root of vector input, output=SQRT(input)....
nrf_axon_result_e nrf_axon_xpy_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Xpy"=>"X Plus Y " vector adds vector X and vector Y.
nrf_axon_result_e nrf_axon_mar_16_24_24(const int16_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Mar" => "Multiply, Accumulate, recursive" sums the products of elements in input vector X and input ...
nrf_axon_result_e nrf_axon_fir_cplx_2d_16_16_32_decimate(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint16_t input_height, uint16_t filter_height, uint16_t decimate_width, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR cplx" => "Finite Impulse Response complex" filter with decimation multiple and 2 sets of filter ...
nrf_axon_result_e nrf_axon_fir_2d_16_16_32_decimate(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint16_t input_height, uint16_t filter_height, uint16_t decimate_width, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter with decimation multiple. Filter coefficients are MAC'd wit...
nrf_axon_result_e nrf_axon_marx_16_32(const int16_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Marx" => "Multiply, Accumulate, recursive, only reload the x vector" sums the products of elements i...
nrf_axon_result_e nrf_axon_acc_24_32(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Acc" => "Accumulate" sums the elements in vector X
nrf_axon_result_e nrf_axon_l2norm_16_24(const int16_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"l2norm" => sums the square of the elements in vector X
nrf_axon_result_e nrf_axon_xs_24_24(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"xs"=>"x squared" Each vector value is multiplied by itself
nrf_axon_result_e nrf_axon_mar_16_24_32(const int16_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Mar" => "Multiply, Accumulate, recursive" sums the products of elements in input vector X and input ...
nrf_axon_result_e nrf_axon_xty_16_16_32(const int16_t *x_ptr, const int16_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"xty" => "vector x times vector y". multiplies 2 16bit vectors to produce a 32bit vector
nrf_axon_result_e nrf_axon_memset_32_output_stride(int16_t set_val, int32_t *out_ptr, uint16_t length, uint8_t output_extra_stride, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
Sets 32bit words with the value in set_val (which is limited to 16bits, but sign extended to 32bits).
nrf_axon_result_e nrf_axon_xspys_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Xspys"=>"X Squared Plus Y Squared" adds the square of vector Y to the square of vector X.
nrf_axon_result_e nrf_axon_marx_24_24(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Marx" => "Multiply, Accumulate, recursive, only reload the x vector" sums the products of elements i...
nrf_axon_result_e nrf_axon_axpby_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, const int32_t *a_scalar, const int32_t *b_scalar, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"axpby"=>"a times x + b times y" Multiplies each x vector value by "a" and adds the product of "b" an...
nrf_axon_result_e nrf_axon_fir_16_16_32_1024_256_decimate_1(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter with decimation multiple. Filter coefficients are MAC'd wit...
nrf_axon_result_e nrf_axon_fir_24_16_24(const int32_t *in_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint16_t input_length, uint16_t filter_length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter. Filter coefficients are MAC'd with the input in reverse or...
nrf_axon_result_e nrf_axon_logn_11p12(const int32_t *in_ptr, int32_t *out_ptr, uint16_t length, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"logn"=> "Natural Log" Calculates the natural log of vector input, output=ln(input)....
nrf_axon_result_e nrf_axon_mar_24_24_32(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Mar" => "Multiply, Accumulate, recursive" sums the products of elements in input vector X and input ...
nrf_axon_result_e nrf_axon_l2norm_24_32(const int32_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"l2norm" => sums the square of the elements in vector X
nrf_axon_result_e nrf_axon_fir_24_24_24(const int32_t *in_ptr, const int32_t *filter_ptr, int32_t *out_ptr, uint16_t input_length, uint16_t filter_length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter. Filter coefficients are MAC'd with the input in reverse or...
nrf_axon_result_e nrf_axon_fft_24(const int32_t *in_ptr, int32_t *out_ptr, uint16_t length_log2, bool half_output, bool round_by_length_log2, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
Performs a 24bit (unpacked) complex FFT. complex numbers are stored in pairs, real component,...
nrf_axon_result_e nrf_axon_acc_16_32(const int16_t *x_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Acc" => "Accumulate" sums the elements in vector X
nrf_axon_result_e nrf_axon_mar_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Mar" => "Multiply, Accumulate, recursive" sums the products of elements in input vector X and input ...
nrf_axon_result_e nrf_axon_abs_24_24_24(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Abs"=>"Absolute" adds the square of vector Y to the square of vector X, then takes the square-root.
nrf_axon_result_e nrf_axon_xty_16_16_32_output_stride(const int16_t *x_ptr, const int16_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, uint8_t output_extra_stride, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"xty output_stride" => "vector x times vector y with output_stride gaps between outputs" vector multi...
nrf_axon_result_e nrf_axon_xspys_24_24_24_input_stride2(const int32_t *x_ptr, const int32_t *y_ptr, int32_t *out_ptr, uint16_t length, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"Xspys"=>"X Squared Plus Y Squared" adds the square of vector Y to the square of vector X....
AxonRoundingEnum
Definition nrf_axon_dsp_intrinsics.h:38
@ kAxonRoundingNone
Definition nrf_axon_dsp_intrinsics.h:39
@ kAxonRoundingMax
Definition nrf_axon_dsp_intrinsics.h:40
nrf_axon_result_e nrf_axon_fir_16_16_32_1024_256_decimate_4(const int16_t *input_ptr, const int16_t *filter_ptr, int32_t *out_ptr, uint8_t rounding_bits, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"FIR" => "Finite Impulse Response" filter with decimation multiple. Filter coefficients are MAC'd wit...
nrf_axon_result_e nrf_axon_dma_2d(const int8_t *input_ptr, int8_t *out_ptr, uint16_t height, uint16_t width, nrf_axon_syncmode_blocking_e block_mode, bool keep_reservation)
"DMA" => "Direct Memory Access" Transfers data from one address to another. The regions must not over...
nrf_axon_result_e
Axon driver return codes.
Definition nrf_axon_driver.h:131
nrf_axon_syncmode_blocking_e
Specifies the blocking mechanism for synchronous Axon command buffer execution.
Definition nrf_axon_driver.h:201