![]() |
Edge AI Add-on API 2.3.0
|
| 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 ) |
#include <include/drivers/axon/nrf_axon_dsp_intrinsics.h>
"xty output_stride" => "vector x times vector y with output_stride gaps between outputs" vector multiplies 2 16bit vectors to produce a 32bit vector, with option to have unpacked output vector.
Useful for applying a hamming window on real input before performing an FFT, which requires complex input. Pass output_extra_stride=1 and the output will be placed every other word in the real coefficients slots. A separate function would need to be called to 0 out the imaginary coefficients.
If output_extra_stride is not needed it can be set to 0, but using axon_xty_16_16_32() is preferred for better performance. It performs multiplication of 2 16bit vectors and produces a 32bit output.
| x_ptr | x vector input. 16bit integers packed. |
| y_ptr | y vector input. 16bit integers packed. |
| out_ptr | location to place output. Can safely overlap either input |
| length | number of of elements in the input vectors. Maximum value is 512. |
| rounding_bits | number of bits to round the output by. |
| output_extra_stride | number of gap words between each output. |
| block_mode | recommnended to be set to NRF_AXON_SYNC_MODE_BLOCKING_POLLING. |
| keep_reservation | set to true if there are subsequent axon operations to execute immediately on completion. true prevents axon from be taken by another user and/or being powered off. Set to false if axon will not be used immediately after to free axon for other users and/or power down if idle. |