26#include "PALConcatenation.h"
34constexpr uint32_t numOutput = 1;
48 const auto input_size = runtime_kernel.
inputs_num;
50 std::vector<const T *> all_input_data(input_size);
51 std::vector<uint32_t> all_shape(input_size);
54 for (int32_t i = 0; i < input_size; ++i)
59 uint8_t *tensor_data = runtime_kernel.
inputs_data[i];
60 all_input_data[i] = core::utils::castInputData<T>(tensor_data);
61 all_shape[i] = shape.dims(axis);
68 params.num_inputs = input_size;
69 status = pal::Concatenation<T>(params, all_shape, all_input_data,
output_shape, output_data);
88 runtime_kernel.
readKernel(op_index, runtime_context);
90 const auto *t0 = runtime_kernel.
inputs[0];
93 status = runtime_kernel.
getDataFromStorage(op_index, runtime_storage, runtime_context);
101 case circle::TensorType_FLOAT32:
102 status = evalGeneric<float>(runtime_kernel);
106 case circle::TensorType_INT8:
107 status = evalGeneric<int8_t>(runtime_kernel);
110 case circle::TensorType_INT32:
111 status = evalGeneric<int32_t>(runtime_kernel);
113 case circle::TensorType_INT64:
114 status = evalGeneric<int64_t>(runtime_kernel);
117 assert(
false &&
"Unsupported type.");
int32_t dimensionsCount() const
uint8_t * outputs_data[maxOutputSize]
const circle::Operator * first_operator
OMStatus getDataFromStorage(uint16_t op_index, core::OMRuntimeStorage &storage, core::OMRuntimeContext &context)
uint8_t * inputs_data[maxInputSize]
OMStatus readKernel(uint16_t op_index, core::OMRuntimeContext &runtime_context)
const circle::Tensor * outputs[maxOutputSize]
const circle::Tensor * inputs[maxInputSize]
const luci_interpreter::RuntimeShape output_shape
OMStatus execute_kernel_CircleConcatenation(const OMExecuteArgs &execute_args)
core::OMRuntimeContext & runtime_context
core::OMRuntimeStorage & runtime_storage