#define _MIR_OPS_PAD_OP_H_
#include "mir/Operation.h"
-#include "mir/Scalar.h"
namespace mir
{
class PadOp : public Operation
{
public:
- /**
- * TODO Remove this constructor after eliminating all its uses.
- * @brief Class for Pad operation in modelIR
- * @param arg The input
- * @param num_dims Number of dimensions
- * @param paddings Vector with pairs of paddings (left, right)
- * @param scalar_value Constant value filling padded region
- */
- PadOp(Output *arg, int32_t num_dims, std::vector<std::pair<int32_t, int32_t>> paddings,
- const Scalar &scalar_value)
- : Operation(Type::pad, {arg})
-
- {
- _padding_before.resize(num_dims);
- _padding_after.resize(num_dims);
- for (int i = 0; i < num_dims; ++i)
- {
- _padding_before[i] = paddings[i].first;
- _padding_after[i] = paddings[i].second;
- }
- _padding_value = scalar_value.get<float>();
- inferOutputShapes();
- }
-
/// @param arg The tensor to be padded.
/// @param padding_before The padding to be added before the tensor.
/// @param padding_after The padding to be added after the tensor.
return new PadOp(inputs[0], _padding_before, _padding_after, _padding_value);
}
- /**
- * TODO Remove this method after eliminating all its uses.
- * @param dim Dimension number
- * @return Pair of paddings for dimension
- */
- std::pair<int32_t, int32_t> getPaddingForDim(int dim) const
- {
- return {_padding_before[dim], _padding_after[dim]};
- }
-
- /**
- * TODO Remove this method after eliminating all its uses.
- * @return Number of dimensions
- */
- int getNumDim() const { return getInputShape(0).rank(); }
-
- /**
- * TODO Remove this method after eliminating all its uses.
- * @return Scalar value
- */
- Scalar getScalar() const
- {
- return Scalar(reinterpret_cast<const char *>(&_padding_value), DataType::FLOAT32,
- sizeof(float));
- }
-
const std::vector<std::int32_t> &getPaddingBefore() const { return _padding_before; }
const std::vector<std::int32_t> &getPaddingAfter() const { return _padding_after; }