// Copyright © Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include "Attributes.hpp" #include "TensorAttributes.hpp" #include #include #include #include #include namespace hipdnn_frontend::graph { class ResampleFwdAttributes : public Attributes { public: ResampleFwdAttributes() = default; /// Input tensor identifiers // NOLINTNEXTLINE(readability-identifier-naming) enum class input_names { X = 0, ///< Input tensor }; /// Output tensor identifiers // NOLINTNEXTLINE(readability-identifier-naming) enum class output_names { Y = 0, ///< Output tensor INDEX = 1, ///< Optional index tensor (for max resample) }; std::unordered_map> inputs; ///< Input tensors std::unordered_map> outputs; ///< Output tensors // NOLINTBEGIN(readability-identifier-naming) std::vector pre_padding; std::vector post_padding; std::vector stride; std::vector window; ResampleMode resample_mode = ResampleMode::NOT_SET; PaddingMode padding_mode = PaddingMode::NOT_SET; std::optional generate_index = std::nullopt; // NOLINTEND(readability-identifier-naming) // NOLINTNEXTLINE(readability-identifier-naming) std::shared_ptr get_x() const { return getInput(input_names::X); } // NOLINTNEXTLINE(readability-identifier-naming) std::shared_ptr get_y() const { return getOutput(output_names::Y); } // NOLINTNEXTLINE(readability-identifier-naming) std::shared_ptr get_index() const { return getOutput(output_names::INDEX); } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_x(const std::shared_ptr& x) { return setInput(input_names::X, x); } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_x(std::shared_ptr&& x) { return setInput(input_names::X, std::move(x)); } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_y(const std::shared_ptr& y) { return setOutput(output_names::Y, y); } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_y(std::shared_ptr&& y) { return setOutput(output_names::Y, std::move(y)); } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_index(const std::shared_ptr& idx) { return setOutput(output_names::INDEX, idx); } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_index(std::shared_ptr&& idx) { return setOutput(output_names::INDEX, std::move(idx)); } // NOLINTNEXTLINE(readability-identifier-naming) const std::vector& get_pre_padding() const { return pre_padding; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_pre_padding(std::vector value) { pre_padding = std::move(value); return *this; } // NOLINTNEXTLINE(readability-identifier-naming) const std::vector& get_post_padding() const { return post_padding; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_post_padding(std::vector value) { post_padding = std::move(value); return *this; } // NOLINTNEXTLINE(readability-identifier-naming) const std::vector& get_stride() const { return stride; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_stride(std::vector value) { stride = std::move(value); return *this; } // NOLINTNEXTLINE(readability-identifier-naming) const std::vector& get_window() const { return window; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_window(std::vector value) { window = std::move(value); return *this; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleMode get_resample_mode() const { return resample_mode; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_resample_mode(ResampleMode value) { resample_mode = value; return *this; } // NOLINTNEXTLINE(readability-identifier-naming) PaddingMode get_padding_mode() const { return padding_mode; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_padding_mode(PaddingMode value) { padding_mode = value; return *this; } // NOLINTNEXTLINE(readability-identifier-naming) std::optional get_generate_index() const { return generate_index; } // NOLINTNEXTLINE(readability-identifier-naming) ResampleFwdAttributes& set_generate_index(bool value) { generate_index = value; return *this; } }; typedef ResampleFwdAttributes Resample_fwd_attributes; // NOLINT(readability-identifier-naming) } // namespace hipdnn_frontend::graph