53 runtime_kernel.
readKernel(op_index, runtime_context);
55 const circle::Tensor *input = runtime_kernel.
inputs[inputTensorIdx];
56 const circle::Tensor *weight = runtime_kernel.
inputs[weightTensorIdx];
57 const circle::Tensor *bias = runtime_kernel.
inputs[biasTensorIdx];
58 const circle::Tensor *output = runtime_kernel.
outputs[outputTensorIdx];
60 assert(input !=
nullptr);
61 assert(weight !=
nullptr);
63 assert(output !=
nullptr);
68 if (weight->type() == circle::TensorType_FLOAT32)
71 status = utils::checkCondition(input->type() == circle::TensorType_FLOAT32 and
72 output->type() == circle::TensorType_FLOAT32 and
73 (!bias or bias->type() == circle::TensorType_FLOAT32));
79 if (weight->type() == circle::TensorType_UINT8)
82 status = utils::checkCondition(input->type() == circle::TensorType_UINT8 and
83 output->type() == circle::TensorType_UINT8 and
84 (!bias or bias->type() == circle::TensorType_INT32));
88 else if (weight->type() == circle::TensorType_INT8)
90 status = utils::checkCondition(input->type() == circle::TensorType_INT8 or
91 input->type() == circle::TensorType_FLOAT32);
95 status = utils::checkCondition(output->type() == circle::TensorType_INT8 or
96 output->type() == circle::TensorType_FLOAT32);
100 status = utils::checkCondition(!bias or bias->type() == circle::TensorType_INT32 or
101 bias->type() == circle::TensorType_INT64 or
102 bias->type() == circle::TensorType_FLOAT32);
106 if (input->type() == circle::TensorType_FLOAT32)
110 status = utils::checkCondition(weight->quantization() !=
nullptr and
111 weight->quantization()->scale() !=
nullptr);
116 else if (weight->type() == circle::TensorType_INT16)
119 status = utils::checkCondition(input->type() == circle::TensorType_INT16 and
120 output->type() == circle::TensorType_INT16 and
121 (!bias or bias->type() == circle::TensorType_INT32));
138#ifndef DIS_DYN_SHAPES
148 status = utils::checkCondition(bias ==
nullptr or weight_shape.
dims(0) == bias_shape.
flatSize());
150 if (input->type() == circle::TensorType_FLOAT32)
156 if (input->quantization() ==
nullptr or output->quantization() ==
nullptr or
157 weight->quantization() ==
nullptr)
160 if (output->quantization()->scale() ==
nullptr or output->quantization()->scale()->size() != 1)
163 if (output->quantization()->zero_point() ==
nullptr or
164 output->quantization()->zero_point()->size() != 1)
167 if (weight->quantization()->scale() ==
nullptr or weight->quantization()->scale()->size() != 1)
170 if (weight->quantization()->zero_point() ==
nullptr or
171 weight->quantization()->zero_point()->size() != 1)