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
28#define NRF_AXON_DSP_VECTOR_MULTPLE (4)
29#define NRF_AXON_DSP_VECTOR_LENGTH_CEIL(vector_length) (NRF_AXON_DSP_VECTOR_MULTPLE * \
30 (((vector_length)+NRF_AXON_DSP_VECTOR_MULTPLE-1)/NRF_AXON_DSP_VECTOR_MULTPLE))
31
41
64 const int32_t *in_ptr,
65 int32_t *out_ptr,
66 uint16_t length_log2,
67 bool half_output,
68 bool round_by_length_log2,
70 bool keep_reservation);
71
94 const int32_t *in_ptr,
95 int32_t *out_ptr,
96 uint16_t length_log2,
97 bool half_output,
98 uint8_t rounding_bits,
100 bool keep_reservation);
101
127 const int32_t *in_ptr,
128 const int32_t *filter_ptr,
129 int32_t *out_ptr,
130 uint16_t input_length,
131 uint16_t filter_length,
132 uint8_t rounding_bits,
134 bool keep_reservation);
135
162 const int32_t *in_ptr,
163 const int16_t *filter_ptr,
164 int32_t *out_ptr,
165 uint16_t input_length,
166 uint16_t filter_length,
167 uint8_t rounding_bits,
169 bool keep_reservation);
188 const int32_t *in_ptr,
189 int32_t *out_ptr,
190 uint16_t length,
192 bool keep_reservation);
193
216 const int32_t *in_ptr,
217 int32_t *out_ptr,
218 uint16_t length,
220 bool keep_reservation);
221
245 const int32_t *in_ptr,
246 int32_t *out_ptr,
247 uint16_t length,
249 bool keep_reservation);
250
271 const int32_t *x_ptr,
272 const int32_t *y_ptr,
273 int32_t *out_ptr,
274 uint16_t length,
275 uint8_t rounding_bits,
277 bool keep_reservation);
278
301 const int32_t *x_ptr,
302 const int32_t *y_ptr,
303 int32_t *out_ptr,
304 uint16_t length,
305 uint8_t rounding_bits,
307 bool keep_reservation);
308
333 const int32_t *x_ptr,
334 const int32_t *y_ptr,
335 int32_t *out_ptr,
336 uint16_t length,
337 uint8_t rounding_bits,
339 bool keep_reservation);
340
363 const int32_t *x_ptr,
364 const int32_t *y_ptr,
365 int32_t *out_ptr,
366 uint16_t length,
367 uint8_t rounding_bits,
369 bool keep_reservation);
370
392 const int32_t *x_ptr,
393 const int32_t *y_ptr,
394 int32_t *out_ptr,
395 uint16_t length,
396 uint8_t rounding_bits,
398 bool keep_reservation);
399
421 const int32_t *x_ptr,
422 const int32_t *y_ptr,
423 int32_t *out_ptr,
424 uint16_t length,
425 uint8_t rounding_bits,
427 bool keep_reservation);
428
450 const int32_t *x_ptr,
451 const int32_t *y_ptr,
452 int32_t *out_ptr,
453 uint16_t length,
454 uint8_t rounding_bits,
456 bool keep_reservation);
457
480 const int32_t *x_ptr,
481 const int32_t *a_scalar,
482 const int32_t *b_scalar,
483 int32_t *output,
484 uint16_t length,
485 uint8_t rounding_bits,
487 bool keep_reservation);
488
519 const int8_t *x_ptr,
520 int32_t a_scalar,
521 int32_t b_scalar,
522 int16_t *output,
523 uint16_t height,
524 uint16_t width,
525 bool input_is_packed,
526 uint8_t rounding_bits,
528 bool keep_reservation);
559 const int16_t *x_ptr,
560 int32_t a_scalar,
561 int32_t b_scalar,
562 int16_t *output,
563 uint16_t height,
564 uint16_t width,
565 bool input_is_packed,
566 uint8_t rounding_bits,
568 bool keep_reservation);
569
594 const int32_t *x_ptr,
595 const int32_t *y_ptr,
596 const int32_t *a_scalar,
597 const int32_t *b_scalar,
598 int32_t *out_ptr,
599 uint16_t length,
600 uint8_t rounding_bits,
602 bool keep_reservation);
603
624 const int32_t *x_ptr,
625 int32_t *out_ptr,
626 uint16_t length,
627 uint8_t rounding_bits,
629 bool keep_reservation);
630
652 const int32_t *x_ptr,
653 const int32_t *y_ptr,
654 int32_t *out_ptr,
655 uint16_t length,
656 uint8_t rounding_bits,
658 bool keep_reservation);
659
675 const int16_t *x_ptr,
676 const int32_t *y_ptr,
677 int32_t *out_ptr,
678 uint16_t length,
679 uint8_t rounding_bits,
681 bool keep_reservation);
682
704 const int16_t *x_ptr,
705 const int16_t *y_ptr,
706 int32_t *out_ptr,
707 uint16_t length,
708 uint8_t rounding_bits,
710 bool keep_reservation);
711
733 const int32_t *x_ptr,
734 const int32_t *y_ptr,
735 int32_t *out_ptr,
736 uint16_t length,
737 uint8_t rounding_bits,
739 bool keep_reservation);
740
762 const int16_t *x_ptr,
763 const int32_t *y_ptr,
764 int32_t *out_ptr,
765 uint16_t length,
766 uint8_t rounding_bits,
768 bool keep_reservation);
769
791 const int16_t *x_ptr,
792 const int16_t *y_ptr,
793 int32_t *out_ptr,
794 uint16_t length,
795 uint8_t rounding_bits,
797 bool keep_reservation);
798
821 const int32_t *x_ptr,
822 int32_t *out_ptr,
823 uint16_t length,
824 uint8_t rounding_bits,
826 bool keep_reservation);
827
849 const int16_t *x_ptr,
850 int32_t *out_ptr,
851 uint16_t length,
852 uint8_t rounding_bits,
854 bool keep_reservation);
855
877 const int32_t *x_ptr,
878 int32_t *out_ptr,
879 uint16_t length,
880 uint8_t rounding_bits,
882 bool keep_reservation);
883
905 const int16_t *x_ptr,
906 int32_t *out_ptr,
907 uint16_t length,
908 uint8_t rounding_bits,
910 bool keep_reservation);
911
912
932 const int32_t *x_ptr,
933 int32_t *out_ptr,
934 uint16_t length,
935 uint8_t rounding_bits,
937 bool keep_reservation);
938
958 const int16_t *x_ptr,
959 int32_t *out_ptr,
960 uint16_t length,
961 uint8_t rounding_bits,
963 bool keep_reservation);
964
984 const int32_t *x_ptr,
985 int32_t *out_ptr,
986 uint16_t length,
987 uint8_t rounding_bits,
989 bool keep_reservation);
990
1010 const int16_t *x_ptr,
1011 int32_t *out_ptr,
1012 uint16_t length,
1013 uint8_t rounding_bits,
1015 bool keep_reservation);
1016
1036 const int32_t *x_ptr,
1037 int32_t *out_ptr,
1038 uint16_t length,
1039 uint8_t rounding_bits,
1041 bool keep_reservation);
1042
1062 const int16_t *x_ptr,
1063 int32_t *out_ptr,
1064 uint16_t length,
1065 uint8_t rounding_bits,
1067 bool keep_reservation);
1068
1088 const int32_t *x_ptr,
1089 int32_t *out_ptr,
1090 uint16_t length,
1091 uint8_t rounding_bits,
1093 bool keep_reservation);
1094
1114 const int16_t *x_ptr,
1115 int32_t *out_ptr,
1116 uint16_t length,
1117 uint8_t rounding_bits,
1119 bool keep_reservation);
1120
1139 const int16_t *x_ptr,
1140 const int16_t *y_ptr,
1141 int32_t *out_ptr,
1142 uint16_t length,
1143 uint8_t rounding_bits,
1145 bool keep_reservation);
1146
1176 const int16_t *x_ptr,
1177 const int16_t *y_ptr,
1178 int32_t *out_ptr,
1179 uint16_t length,
1180 uint8_t rounding_bits,
1181 uint8_t output_extra_stride,
1183 bool keep_reservation);
1184
1209 int16_t set_val,
1210 int32_t *out_ptr,
1211 uint16_t length,
1212 uint8_t output_extra_stride,
1214 bool keep_reservation);
1215
1232 const int32_t *x_ptr,
1233 int32_t *out_ptr,
1234 uint16_t length,
1236 bool keep_reservation);
1237
1248 const int32_t *in_ptr,
1249 int8_t *out_ptr,
1250 uint16_t length,
1252 bool keep_reservation);
1253
1292 const int16_t *input_ptr,
1293 const int16_t *filter_ptr,
1294 int32_t *out_ptr,
1295 uint16_t input_height,
1296 uint16_t filter_height,
1297 uint16_t decimate_width,
1298 uint8_t rounding_bits,
1300 bool keep_reservation);
1301
1340 const int16_t *input_ptr,
1341 const int16_t *filter_ptr,
1342 int32_t *out_ptr,
1343 uint16_t input_height,
1344 uint16_t filter_height,
1345 uint16_t decimate_width,
1346 uint8_t rounding_bits,
1348 bool keep_reservation);
1349
1384 const int16_t *input_ptr,
1385 const int16_t *filter_ptr,
1386 int32_t *out_ptr,
1387 uint16_t input_length,
1388 uint16_t filter_length,
1389 uint16_t decimate,
1390 uint8_t rounding_bits,
1392 bool keep_reservation);
1393
1422 const int16_t *input_ptr,
1423 const int16_t *filter_ptr,
1424 int32_t *out_ptr,
1425 uint8_t rounding_bits,
1427 bool keep_reservation);
1428
1457 const int16_t *input_ptr,
1458 const int16_t *filter_ptr,
1459 int32_t *out_ptr,
1460 uint8_t rounding_bits,
1462 bool keep_reservation);
1463
1505 const int16_t *input_ptr,
1506 const int16_t *filter_ptr,
1507 int32_t *out_ptr,
1508 uint16_t input_height,
1509 uint16_t filter_height,
1510 uint16_t decimate_width,
1511 uint8_t rounding_bits,
1513 bool keep_reservation);
1514
1556 const int16_t *input_ptr,
1557 const int16_t *filter_ptr,
1558 int32_t *out_ptr,
1559 uint16_t input_height,
1560 uint16_t filter_height,
1561 uint16_t decimate_width,
1562 uint8_t rounding_bits,
1564 bool keep_reservation);
1565
1590 const int8_t *input_ptr,
1591 int8_t *out_ptr,
1592 uint16_t height,
1593 uint16_t width,
1595 bool keep_reservation);
1596
1597#ifdef __cplusplus
1598}
1599#endif
1600
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:37
@ kAxonRoundingNone
Definition nrf_axon_dsp_intrinsics.h:38
@ kAxonRoundingMax
Definition nrf_axon_dsp_intrinsics.h:39
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:109
nrf_axon_syncmode_blocking_e
Specifies the blocking mechanism for synchronous Axon command buffer execution.
Definition nrf_axon_driver.h:177