clang-tidy suggests to pass by value and use `std::move`, but it is easy to forget and does not give significant benefits.
Signed-off-by: Sergei Barannikov <s.barannikov@samsung.com>
Shape(std::initializer_list<int32_t> &&dims) : _dims(std::move(dims)) {}
- explicit Shape(const std::vector<int32_t> &dims) : _dims(std::begin(dims), std::end(dims)) {}
+ // TODO Make it 'explicit'.
+ Shape(const std::vector<int32_t> &dims) : _dims(std::begin(dims), std::end(dims)) {}
int32_t rank() const { return static_cast<int32_t>(_dims.size()); }
class AvgPool2DOp : public Operation
{
public:
- AvgPool2DOp(Output *arg, std::vector<std::int32_t> window_size, std::vector<std::int32_t> strides,
- std::vector<std::int32_t> padding_before, std::vector<std::int32_t> padding_after,
- bool include_pad, DataFormat data_format)
- : Operation(Type::avgPool2D, {arg}), _window_size(std::move(window_size)),
- _strides(std::move(strides)), _padding_before(std::move(padding_before)),
- _padding_after(std::move(padding_after)), _include_pad(include_pad),
+ AvgPool2DOp(Output *arg, const std::vector<std::int32_t> &window_size,
+ const std::vector<std::int32_t> &strides,
+ const std::vector<std::int32_t> &padding_before,
+ const std::vector<std::int32_t> &padding_after, bool include_pad,
+ DataFormat data_format)
+ : Operation(Type::avgPool2D, {arg}), _window_size(window_size), _strides(strides),
+ _padding_before(padding_before), _padding_after(padding_after), _include_pad(include_pad),
_data_format(data_format)
{
inferOutputShapes();
class Conv2DOp : public Operation
{
public:
- Conv2DOp(Output *input, Output *kernel, const Shape &strides, std::vector<int32_t> padding_before,
- std::vector<int32_t> padding_after, DataFormat data_format = DataFormat::NHWC)
+ Conv2DOp(Output *input, Output *kernel, const Shape &strides,
+ const std::vector<std::int32_t> &padding_before,
+ const std::vector<std::int32_t> &padding_after,
+ DataFormat data_format = DataFormat::NHWC)
: Operation(Type::conv2D, {input, kernel}), _strides(strides),
- _padding_before(std::move(padding_before)), _padding_after(std::move(padding_after)),
- _data_format(data_format)
+ _padding_before(padding_before), _padding_after(padding_after), _data_format(data_format)
{
inferOutputShapes();
}
{
public:
DepthwiseConv2DOp(Output *input, Output *kernel, const Shape &strides,
- std::vector<int32_t> padding_before, std::vector<int32_t> padding_after,
+ const std::vector<std::int32_t> &padding_before,
+ const std::vector<std::int32_t> &padding_after,
DataFormat data_format = DataFormat::NHWC)
: Operation(Type::depthwiseConv, {input, kernel}), _strides(strides),
- _padding_before(std::move(padding_before)), _padding_after(std::move(padding_after)),
- _data_format(data_format)
+ _padding_before(padding_before), _padding_after(padding_after), _data_format(data_format)
{
inferOutputShapes();
}
class MaxPool2DOp : public Operation
{
public:
- MaxPool2DOp(Output *arg, std::vector<std::int32_t> window_size, std::vector<std::int32_t> strides,
- std::vector<std::int32_t> padding_before, std::vector<std::int32_t> padding_after,
- DataFormat data_format)
- : Operation(Type::maxPool2D, {arg}), _window_size(std::move(window_size)),
- _strides(std::move(strides)), _padding_before(std::move(padding_before)),
- _padding_after(std::move(padding_after)), _data_format(data_format)
+ MaxPool2DOp(Output *arg, const std::vector<std::int32_t> &window_size,
+ const std::vector<std::int32_t> &strides,
+ const std::vector<std::int32_t> &padding_before,
+ const std::vector<std::int32_t> &padding_after, DataFormat data_format)
+ : Operation(Type::maxPool2D, {arg}), _window_size(window_size), _strides(strides),
+ _padding_before(padding_before), _padding_after(padding_after), _data_format(data_format)
{
inferOutputShapes();
}
/// @param padding_before The padding to be added before the tensor.
/// @param padding_after The padding to be added after the tensor.
/// @param padding_value The value to be used for padding.
- PadOp(Output *arg, std::vector<std::int32_t> padding_before,
- std::vector<std::int32_t> padding_after, float padding_value)
- : Operation(Type::pad, {arg}), _padding_before(std::move(padding_before)),
- _padding_after(std::move(padding_after)), _padding_value(padding_value)
+ PadOp(Output *arg, const std::vector<std::int32_t> &padding_before,
+ const std::vector<std::int32_t> &padding_after, float padding_value)
+ : Operation(Type::pad, {arg}), _padding_before(padding_before), _padding_after(padding_after),
+ _padding_value(padding_value)
{
assert(_padding_before.size() == _padding_after.size());
inferOutputShapes();
class ReduceMeanOp : public ReduceOp
{
public:
- ReduceMeanOp(Output *arg, std::vector<int> reduction_dims, bool keep_dims)
- : ReduceOp(Type::reduceMean, arg, std::move(reduction_dims), keep_dims)
+ ReduceMeanOp(Output *arg, const std::vector<int> &reduction_dims, bool keep_dims)
+ : ReduceOp(Type::reduceMean, arg, reduction_dims, keep_dims)
{
}
class ReduceOp : public Operation
{
protected:
- ReduceOp(Type type, Output *arg, std::vector<int> reduction_dims, bool keep_dims)
- : Operation(type, {arg}), _reduction_dims(std::move(reduction_dims)), _keep_dims(keep_dims)
+ ReduceOp(Type type, Output *arg, const std::vector<int> &reduction_dims, bool keep_dims)
+ : Operation(type, {arg}), _reduction_dims(reduction_dims), _keep_dims(keep_dims)
{
inferOutputShapes();
}
nearestNeighbor, // TODO: BICUBIC and BILINEAR
};
- ResizeOp(Output *arg, ResizeMethod mode, std::vector<float> scales)
- : Operation(Type::resizeIm, {arg}), _mode(mode), _scales(std::move(scales))
+ ResizeOp(Output *arg, ResizeMethod mode, const std::vector<float> &scales)
+ : Operation(Type::resizeIm, {arg}), _mode(mode), _scales(scales)
{
// Infer output shape based on given scales.
auto &input_shape = getInputShape(0);
class SqueezeOp : public Operation
{
public:
- SqueezeOp(Output *arg, std::vector<int32_t> dims_to_squeeze)
- : Operation(Type::squeeze, {arg}), _dims_to_squeeze(std::move(dims_to_squeeze))
+ SqueezeOp(Output *arg, const std::vector<std::int32_t> &dims_to_squeeze)
+ : Operation(Type::squeeze, {arg}), _dims_to_squeeze(dims_to_squeeze)
{
// Infer output shape.
inferOutputShapes();
class TransposeOp : public Operation
{
public:
- TransposeOp(Output *arg, std::vector<std::size_t> axis_order);
+ TransposeOp(Output *arg, const std::vector<std::size_t> &axis_order);
const std::vector<std::size_t> &getAxisOrder() const { return _axis_order; }
namespace ops
{
-TransposeOp::TransposeOp(Output *arg, std::vector<std::size_t> axis_order)
- : Operation(Type::transpose, {arg}), _axis_order(std::move(axis_order))
+TransposeOp::TransposeOp(Output *arg, const std::vector<std::size_t> &axis_order)
+ : Operation(Type::transpose, {arg}), _axis_order(axis_order)
{
assert(_axis_order.size() == static_cast<std::size_t>(getInputShape(0).rank()));
inferOutputShapes();
auto &input_shape = getInputShape(0);
Shape output_shape(input_shape.rank());
for (std::size_t i = 0; i < _axis_order.size(); ++i)
- output_shape.dim(static_cast<int32_t>(i)) =
+ output_shape.dim(static_cast<std::int64_t>(i)) =
input_shape.dim(static_cast<int32_t>(_axis_order.at(i)));
setOutputShape(0, output_shape);
}
ASSERT_TRUE(range.contains(idx));
}
}
-}
+} // namespace