• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /**
3  * Copyright 2023 Huawei Technologies Co., Ltd
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef NNACL_KERNEL_PAD_H_
19 #define NNACL_KERNEL_PAD_H_
20 
21 #include <math.h>
22 #include "nnacl/op_base.h"
23 #include "nnacl/tensor_c.h"
24 #include "nnacl/kernel.h"
25 #include "nnacl/pad_parameter.h"
26 
27 typedef struct MirrorPadBlock {
28   int out_offset_;
29   int out_stride_[DEFAULT_PAD_NDIMS];
30   int size_[DEFAULT_PAD_NDIMS];
31 } MirrorPadBlock;
32 
33 typedef struct PadStruct {
34   KernelBase base_;
35   int data_type_;
36   int mirror_offset_;
37   float constant_value_;
38   int pad_mode_;
39   int paddings_[MAX_PAD_SIZE];
40   int paddings_size_;
41   int in_[DEFAULT_PAD_NDIMS];
42   int out_[DEFAULT_PAD_NDIMS];
43   int in_strides_[DEFAULT_PAD_NDIMS];
44   int out_strides_[DEFAULT_PAD_NDIMS];
45   MirrorPadBlock *mirror_pad_block_;
46   int mirror_pad_block_size_;
47 } PadStruct;
48 
49 KernelBase *CreatePad(OpParameter *param, int data_type);
50 
51 #endif  // NNACL_KERNEL_PAD_H_
52