17#include "../KernelGenerator.h"
18#include "../Validator.h"
25void Validator::visit(
const ir::operation::Pack &) {
_supported =
true; }
27void KernelGenerator::visit(
const ir::operation::Pack &node)
29 const auto output_index{node.getOutputs().at(0)};
30 auto axis{node.param().axis};
32 const auto output_rank = _ctx.
at(output_index).shape().rank();
34 std::vector<ir::OperandIndex> input_indexes;
35 for (
const auto &input_index : node.getInputs())
38 auto output = _tensor_reg->getAclTensor(output_index)->handle();
39 std::vector<arm_compute::ITensor *>
inputs;
40 for (
const auto &input_index : input_indexes)
48 for (
const auto &input_index : input_indexes)
50 const auto &input_tensor = _tensor_reg->getAclTensor(input_index);
51 if (input_tensor->num_dimensions() != input_tensor->info()->num_dimensions())
58 auto fn = acl_common::generateLayer<arm_compute::NEStackLayer>(inputs, axis, output);
61 for (
const auto &input_index : input_indexes)
63 const auto &input_tensor = _tensor_reg->getAclTensor(input_index);
64 if (input_tensor->dimension(0) == 1)
uint32_t value(void) const
std::unique_ptr< exec::IFunction > _return_fn
const Object & at(const Index &index) const
Get the object that is associated with the given index.
ARMComputeAxis ToARMComputeAxis(uint32_t rank, uint32_t axis)
void enableDimCorrection(IACLTensor *tensor)
std::unique_ptr< AclFunction > asAclFunction(std::unique_ptr<::arm_compute::IFunction > &&layer)
void disableDimCorrection(IACLTensor *tensor)