ESP-IDF Firmware
Firmware architecture and call graph
Loading...
Searching...
No Matches
dspi_dotprod.h
Go to the documentation of this file.
1
2// Copyright 2018-2019 Espressif Systems (Shanghai) PTE LTD
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16
17#ifndef _dspi_dotprod_H_
18#define _dspi_dotprod_H_
19
20#include "esp_log.h"
21#include "dsp_err.h"
22#include "dsp_types.h"
24
25#ifdef __cplusplus
26extern "C"
27{
28#endif
29
46esp_err_t dspi_dotprod_f32_ansi(image2d_t *in_image, image2d_t *filter, float *out_value, int count_x, int count_y);
48
66esp_err_t dspi_dotprod_s16_ansi(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift);
67esp_err_t dspi_dotprod_u16_ansi(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift);
68esp_err_t dspi_dotprod_s8_ansi(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift);
69esp_err_t dspi_dotprod_u8_ansi(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift);
70
71esp_err_t dspi_dotprod_s16_aes3(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift);
72esp_err_t dspi_dotprod_u16_aes3(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift);
73esp_err_t dspi_dotprod_s8_aes3(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift);
74esp_err_t dspi_dotprod_u8_aes3(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift);
75
76esp_err_t dspi_dotprod_s16_arp4(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift);
77esp_err_t dspi_dotprod_s8_arp4(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift);
78esp_err_t dspi_dotprod_u16_arp4(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift);
79esp_err_t dspi_dotprod_u8_arp4(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift);
80
81
83
101esp_err_t dspi_dotprod_off_f32_ansi(image2d_t *in_image, image2d_t *filter, float *out_value, int count_x, int count_y, float offset);
103
122esp_err_t dspi_dotprod_off_s16_ansi(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift, int16_t offset);
123esp_err_t dspi_dotprod_off_u16_ansi(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift, uint16_t offset);
124esp_err_t dspi_dotprod_off_s8_ansi(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift, int8_t offset);
125esp_err_t dspi_dotprod_off_u8_ansi(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift, uint8_t offset);
126
127esp_err_t dspi_dotprod_off_s16_aes3(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift, int16_t offset);
128esp_err_t dspi_dotprod_off_u16_aes3(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift, uint16_t offset);
129esp_err_t dspi_dotprod_off_s8_aes3(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift, int8_t offset);
130esp_err_t dspi_dotprod_off_u8_aes3(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift, uint8_t offset);
131
132esp_err_t dspi_dotprod_off_s16_arp4(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift, int16_t offset);
133esp_err_t dspi_dotprod_off_u16_arp4(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift, uint16_t offset);
134esp_err_t dspi_dotprod_off_s8_arp4(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift, int8_t offset);
135esp_err_t dspi_dotprod_off_u8_arp4(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift, uint8_t offset);
136
138
139
140#ifdef __cplusplus
141}
142#endif
143
144
145#ifdef CONFIG_DSP_OPTIMIZED
146#define dspi_dotprod_f32 dspi_dotprod_f32_ansi
147#define dspi_dotprod_off_f32 dspi_dotprod_off_f32_ansi
148#if (dspi_dotprod_aes3_enabled == 1)
149#define dspi_dotprod_s16 dspi_dotprod_s16_aes3
150#define dspi_dotprod_u16 dspi_dotprod_u16_aes3
151#define dspi_dotprod_s8 dspi_dotprod_s8_aes3
152#define dspi_dotprod_u8 dspi_dotprod_u8_aes3
153#define dspi_dotprod_off_s16 dspi_dotprod_off_s16_aes3
154#define dspi_dotprod_off_s8 dspi_dotprod_off_s8_aes3
155#define dspi_dotprod_off_u16 dspi_dotprod_off_u16_aes3
156#define dspi_dotprod_off_u8 dspi_dotprod_off_u8_aes3
157#elif (dspi_dotprod_arp4_enabled == 1)
158#define dspi_dotprod_s16 dspi_dotprod_s16_arp4
159#define dspi_dotprod_s8 dspi_dotprod_s8_arp4
160#define dspi_dotprod_u16 dspi_dotprod_u16_arp4
161#define dspi_dotprod_u8 dspi_dotprod_u8_arp4
162#define dspi_dotprod_off_s16 dspi_dotprod_off_s16_arp4
163#define dspi_dotprod_off_s8 dspi_dotprod_off_s8_arp4
164#define dspi_dotprod_off_u16 dspi_dotprod_off_u16_arp4
165#define dspi_dotprod_off_u8 dspi_dotprod_off_u8_arp4
166#else
167#define dspi_dotprod_s16 dspi_dotprod_s16_ansi
168#define dspi_dotprod_s8 dspi_dotprod_s8_ansi
169#define dspi_dotprod_u16 dspi_dotprod_u16_ansi
170#define dspi_dotprod_u8 dspi_dotprod_u8_ansi
171#define dspi_dotprod_off_s16 dspi_dotprod_off_s16_ansi
172#define dspi_dotprod_off_s8 dspi_dotprod_off_s8_ansi
173#define dspi_dotprod_off_u16 dspi_dotprod_off_u16_ansi
174#define dspi_dotprod_off_u8 dspi_dotprod_off_u8_ansi
175#endif
176#endif
177#ifdef CONFIG_DSP_ANSI
178#define dspi_dotprod_f32 dspi_dotprod_f32_ansi
179#define dspi_dotprod_off_f32 dspi_dotprod_off_f32_ansi
180#define dspi_dotprod_s16 dspi_dotprod_s16_ansi
181#define dspi_dotprod_s8 dspi_dotprod_s8_ansi
182#define dspi_dotprod_off_s16 dspi_dotprod_off_s16_ansi
183#define dspi_dotprod_off_s8 dspi_dotprod_off_s8_ansi
184#define dspi_dotprod_u16 dspi_dotprod_u16_ansi
185#define dspi_dotprod_u8 dspi_dotprod_u8_ansi
186#define dspi_dotprod_off_u16 dspi_dotprod_off_u16_ansi
187#define dspi_dotprod_off_u8 dspi_dotprod_off_u8_ansi
188#endif
189
190
191#endif // _dspi_dotprod_H_
struct image2d_s image2d_t
esp_err_t dspi_dotprod_off_s16_aes3(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift, int16_t offset)
esp_err_t dspi_dotprod_s16_arp4(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_s8_ansi(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift, int8_t offset)
esp_err_t dspi_dotprod_f32_ansi(image2d_t *in_image, image2d_t *filter, float *out_value, int count_x, int count_y)
dot product of two images Dot product calculation for two floating point images: out_value += image[i...
esp_err_t dspi_dotprod_s16_ansi(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift)
dot product of two images Dot product calculation for two floating point images: out_value += image[i...
esp_err_t dspi_dotprod_s8_arp4(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_s8_arp4(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift, int8_t offset)
esp_err_t dspi_dotprod_off_u8_arp4(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift, uint8_t offset)
esp_err_t dspi_dotprod_s8_ansi(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_s8_aes3(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift, int8_t offset)
esp_err_t dspi_dotprod_off_u16_aes3(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift, uint16_t offset)
esp_err_t dspi_dotprod_s16_aes3(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_s16_arp4(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift, int16_t offset)
esp_err_t dspi_dotprod_u8_ansi(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_u8_arp4(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_f32_ansi(image2d_t *in_image, image2d_t *filter, float *out_value, int count_x, int count_y, float offset)
dot product of two images with input offset Dot product calculation for two floating point images: ou...
esp_err_t dspi_dotprod_u16_arp4(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_u8_aes3(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_u16_aes3(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_u8_ansi(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift, uint8_t offset)
esp_err_t dspi_dotprod_off_u8_aes3(image2d_t *in_image, image2d_t *filter, uint8_t *out_value, int count_x, int count_y, int shift, uint8_t offset)
esp_err_t dspi_dotprod_off_u16_ansi(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift, uint16_t offset)
esp_err_t dspi_dotprod_s8_aes3(image2d_t *in_image, image2d_t *filter, int8_t *out_value, int count_x, int count_y, int shift)
esp_err_t dspi_dotprod_off_u16_arp4(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift, uint16_t offset)
esp_err_t dspi_dotprod_off_s16_ansi(image2d_t *in_image, image2d_t *filter, int16_t *out_value, int count_x, int count_y, int shift, int16_t offset)
dot product of two images with input offset Dot product calculation for two floating point images: ou...
esp_err_t dspi_dotprod_u16_ansi(image2d_t *in_image, image2d_t *filter, uint16_t *out_value, int count_x, int count_y, int shift)
int esp_err_t
Definition esp_err.h:21