onnx2versal
Loading...
Searching...
No Matches
pad.h
1#ifndef PAD_H_
2#define PAD_H_
3
4#include <type_traits>
5#include <adf.h>
6#include <assert.h>
7
8
22template <typename TT, int B, int INP_H, int INP_W, int INP_W_PAD, int H0, int H1, int W0, int W1>
24 private:
25 static constexpr int OUT_H = INP_H + H0 + H1;
26 static constexpr int OUT_W = INP_W + W0 + W1;
27 TT pad_value;
28
29 public:
31 TT pad_value = 0
32 ): pad_value(pad_value) {};
33
34 void filter(
35 input_stream<TT>* in,
36 output_stream<TT>* out
37 );
38
39 static void registerKernelClass() {
40 static_assert((std::is_same<TT, float>::value));
41 REGISTER_FUNCTION(Pad2DStreamFloat::filter);
42 }
43};
44
45
50template <typename TT, int B, int INP_H, int INP_W, int INP_W_PAD, int H0, int H1, int W0, int W1>
52 private:
53 static constexpr int OUT_H = INP_H + H0 + H1;
54 static constexpr int OUT_W = INP_W + W0 + W1;
55 TT pad_value;
56
57 public:
59 TT pad_value = 0
60 ): pad_value(pad_value) {};
61
62 void filter(
63 input_stream<TT>* in,
64 output_stream<TT>* out
65 );
66
67 static void registerKernelClass() {
68 static_assert((std::is_same<TT, int8_t>::value) || (std::is_same<TT, uint8_t>::value));
69 static_assert((B*OUT_H*OUT_W) % 4 == 0);
70 static_assert(INP_W_PAD % 16 == 0);
71 REGISTER_FUNCTION(Pad2DStreamInt8::filter);
72 }
73};
74
75
81template <typename TT, int B, int INP_H, int INP_W, int INP_W_PAD, int H0, int H1, int W0, int W1>
83 private:
84 static constexpr int OUT_H = INP_H + H0 + H1;
85 static constexpr int OUT_W = INP_W + W0 + W1;
86 TT pad_value;
87
88 public:
90 TT pad_value = 0
91 ): pad_value(pad_value) {};
92
93 void filter(
94 input_window<TT>* in,
95 output_window<TT>* out
96 );
97
98 static void registerKernelClass() {
99 REGISTER_FUNCTION(Pad2DWindowScalar::filter);
100 }
101};
102
103
108template <typename TT, int B, int INP_H, int INP_W, int INP_W_PAD, int H0, int H1, int W0, int W1>
110 private:
111 static constexpr int OUT_H = INP_H + H0 + H1;
112 static constexpr int OUT_W = INP_W + W0 + W1;
113 TT pad_value;
114
115 public:
117 TT pad_value = 0
118 ): pad_value(pad_value) {};
119
120 void filter(
121 input_stream<TT>* in,
122 output_window<TT>* out
123 );
124
125 static void registerKernelClass() {
126 static_assert((std::is_same<TT, int8_t>::value) || (std::is_same<TT, uint8_t>::value));
127 static_assert(INP_W_PAD % 16 == 0);
128 REGISTER_FUNCTION(Pad2DStream2WindowInt8::filter);
129 }
130};
134#endif // PAD_H_
Vector implementation for Pad2D using input stream and output window Pad2DStream2WindowInt8<a,...
Definition pad.h:109
Vector implementation for Float Pad2D Pad2DStreamFloat<f,2,30,30,32,1,1,1,1> total = 2304.
Definition pad.h:23
Vector implementation for Int8 Pad2D Pad2DStreamInt8<a,2,30,30,32,1,1,1,1> total = 1885 for v64int16.
Definition pad.h:51
Vector implementation for Pad2D using windows Pad2DWindowScalar<f,2,30,30,32,1,1,1,...
Definition pad.h:82