68 const circle::Tensor *input1 =
nullptr;
69 const circle::Tensor *input2 =
nullptr;
70 const circle::Tensor *input3 =
nullptr;
72 const circle::Tensor *output =
nullptr;
75 const int32_t *input2_data;
76 const int32_t *input3_data;
80 const circle::SliceOptions *options;
84 runtime_kernel.
readKernel(op_index, runtime_context);
86 input1 = runtime_kernel.
inputs[input1TensorIdx];
87 input2 = runtime_kernel.
inputs[input2TensorIdx];
88 input3 = runtime_kernel.
inputs[input3TensorIdx];
90 output = runtime_kernel.
outputs[outputTensorIdx];
91 assert(input1 !=
nullptr);
92 assert(input2 !=
nullptr);
93 assert(input3 !=
nullptr);
94 assert(output !=
nullptr);
96 status = runtime_kernel.
getDataFromStorage(op_index, runtime_storage, runtime_context);
100 input1_data = runtime_kernel.
inputs_data[input1TensorIdx];
101 input2_data = utils::castInputData<int32_t>(runtime_kernel.
inputs_data[input2TensorIdx]);
102 input3_data = utils::castInputData<int32_t>(runtime_kernel.
inputs_data[input3TensorIdx]);
103 output_data = runtime_kernel.
outputs_data[outputTensorIdx];
105 assert(input1_data !=
nullptr);
106 assert(input2_data !=
nullptr);
107 assert(input3_data !=
nullptr);
108 assert(output_data !=
nullptr);
110 options = runtime_kernel.
first_operator->builtin_options_as_SliceOptions();
117 op_params.size_count = MAX_DIM;
118 for (
int i = 0; i < MAX_DIM; i++)
120 op_params.begin[i] = 0;
121 op_params.size[i] = 1;
125 getBeginAndSizeVectors(num_dim, input2_data, input3_data, op_params.begin, op_params.size);
127 switch (input1->type())
130 case circle::TensorType_FLOAT32:
132 status =
pal::Slice(op_params, input_shape, utils::castInputData<float>(input1_data),
133 utils::castOutputData<float>(output_data));
137 case circle::TensorType_INT32:
139 status =
pal::Slice(op_params, input_shape, utils::castInputData<int32_t>(input1_data),
140 utils::castOutputData<int32_t>(output_data));
143 case circle::TensorType_INT64:
145 status =
pal::Slice(op_params, input_shape, utils::castInputData<int64_t>(input1_data),
146 utils::castOutputData<int64_t>(output_data));
152 assert(
false &&
"Unsupported type.");