From: 박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 Date: Tue, 14 May 2019 10:59:49 +0000 (+0900) Subject: [loco] Introduce Stride class (#3461) X-Git-Tag: nncc_backup~601 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=df62367a5b7a5d12b9765f5532effe7909dbdd56;p=platform%2Fcore%2Fml%2Fnnfw.git [loco] Introduce Stride class (#3461) * [loco] Introduce Stride class This commit declares (generic) Stride class, and provides its specialization over 2D. Signed-off-by: Jonghyun Park * Mark as a final class --- diff --git a/contrib/loco/include/loco/IR/Stride.h b/contrib/loco/include/loco/IR/Stride.h new file mode 100644 index 0000000..eb9d471 --- /dev/null +++ b/contrib/loco/include/loco/IR/Stride.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __LOCO_IR_STRIDE_H__ +#define __LOCO_IR_STRIDE_H__ + +#include + +namespace loco +{ + +/** + * @brief Stride configuration for N-dimensional spatial operations + */ +template class Stride; + +/** + * @brief Stride configuration for 2D spatial operations + */ +template <> class Stride<2> final +{ +public: + uint32_t vertical(void) const { return _vertical; } + void vertical(uint32_t value) { _vertical = value; } + +public: + uint32_t horizontal(void) const { return _horizontal; } + void horizontal(uint32_t value) { _horizontal = value; } + +private: + uint32_t _vertical = 1; + uint32_t _horizontal = 1; +}; + +} // namespace loco + +#endif // __LOCO_IR_STRIDE_H__ diff --git a/contrib/loco/src/IR/Stride.test.cpp b/contrib/loco/src/IR/Stride.test.cpp new file mode 100644 index 0000000..60deb5c --- /dev/null +++ b/contrib/loco/src/IR/Stride.test.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "loco/IR/Stride.h" + +#include + +TEST(StrideTest, default_constructor_2D) +{ + loco::Stride<2> stride; + + ASSERT_EQ(stride.vertical(), 1); + ASSERT_EQ(stride.horizontal(), 1); +} + +TEST(StrideTest, setter_and_getter_2D) +{ + loco::Stride<2> stride; + + stride.vertical(2); + + ASSERT_EQ(stride.vertical(), 2); + ASSERT_EQ(stride.horizontal(), 1); + + stride.horizontal(3); + + ASSERT_EQ(stride.vertical(), 2); + ASSERT_EQ(stride.horizontal(), 3); +}