}
}
break;
-#if 0 // REF-ANN
- case OperationType::L2_POOL_2D: {
- const size_t inCount = ins.size();
- if ((inCount != 10 && inCount != 7) ||
- !allParametersPresent(inCount, 1)) {
- return ANEURALNETWORKS_BAD_DATA;
- }
- const RunTimeOperandInfo& input = mOperands[ins[0]];
+ case OperationType::L2_POOL_2D:
+ {
+ const size_t inCount = ins.size();
+ if ((inCount != 10 && inCount != 7) || !allParametersPresent(inCount, 1))
+ {
+ return ANEURALNETWORKS_BAD_DATA;
+ }
+ const RunTimeOperandInfo &input = mOperands[ins[0]];
- int32_t padding_left, padding_right;
- int32_t padding_top, padding_bottom;
- int32_t stride_width, stride_height;
- int32_t filter_width, filter_height;
- int32_t activation;
-
- if (inCount == 10) {
- padding_left = getScalarData<int32_t>(mOperands[ins[1]]);
- padding_right = getScalarData<int32_t>(mOperands[ins[2]]);
- padding_top = getScalarData<int32_t>(mOperands[ins[3]]);
- padding_bottom = getScalarData<int32_t>(mOperands[ins[4]]);
- stride_width = getScalarData<int32_t>(mOperands[ins[5]]);
- stride_height = getScalarData<int32_t>(mOperands[ins[6]]);
- filter_width = getScalarData<int32_t>(mOperands[ins[7]]);
- filter_height = getScalarData<int32_t>(mOperands[ins[8]]);
- activation = getScalarData<int32_t>(mOperands[ins[9]]);
- } else {
- int32_t padding_implicit = getScalarData<int32_t>(mOperands[ins[1]]);
- stride_width = getScalarData<int32_t>(mOperands[ins[2]]);
- stride_height = getScalarData<int32_t>(mOperands[ins[3]]);
- filter_width = getScalarData<int32_t>(mOperands[ins[4]]);
- filter_height = getScalarData<int32_t>(mOperands[ins[5]]);
- activation = getScalarData<int32_t>(mOperands[ins[6]]);
-
- Shape inputShape = input.shape();
- int32_t input_width = getSizeOfDimension(inputShape, 2);
- int32_t input_height = getSizeOfDimension(inputShape, 1);
- calculateExplicitPadding(input_width, stride_width,
- filter_width, padding_implicit,
- &padding_left, &padding_right);
- calculateExplicitPadding(input_height, stride_height,
- filter_height, padding_implicit,
- &padding_top, &padding_bottom);
- }
+ int32_t padding_left, padding_right;
+ int32_t padding_top, padding_bottom;
+ int32_t stride_width, stride_height;
+ int32_t filter_width, filter_height;
+ int32_t activation;
- RunTimeOperandInfo& output = mOperands[outs[0]];
- Shape outShape = output.shape();
+ if (inCount == 10)
+ {
+ padding_left = getScalarData<int32_t>(mOperands[ins[1]]);
+ padding_right = getScalarData<int32_t>(mOperands[ins[2]]);
+ padding_top = getScalarData<int32_t>(mOperands[ins[3]]);
+ padding_bottom = getScalarData<int32_t>(mOperands[ins[4]]);
+ stride_width = getScalarData<int32_t>(mOperands[ins[5]]);
+ stride_height = getScalarData<int32_t>(mOperands[ins[6]]);
+ filter_width = getScalarData<int32_t>(mOperands[ins[7]]);
+ filter_height = getScalarData<int32_t>(mOperands[ins[8]]);
+ activation = getScalarData<int32_t>(mOperands[ins[9]]);
+ }
+ else
+ {
+ int32_t padding_implicit = getScalarData<int32_t>(mOperands[ins[1]]);
+ stride_width = getScalarData<int32_t>(mOperands[ins[2]]);
+ stride_height = getScalarData<int32_t>(mOperands[ins[3]]);
+ filter_width = getScalarData<int32_t>(mOperands[ins[4]]);
+ filter_height = getScalarData<int32_t>(mOperands[ins[5]]);
+ activation = getScalarData<int32_t>(mOperands[ins[6]]);
- if (input.type == OperandType::TENSOR_FLOAT32) {
- success = genericPoolingPrepare(input.shape(),
- padding_left, padding_right,
- padding_top, padding_bottom,
- stride_width, stride_height,
- filter_width, filter_height,
- &outShape) &&
- setInfoAndAllocateIfNeeded(&output, outShape) &&
- l2PoolFloat32(reinterpret_cast<const float*>(input.buffer),
- input.shape(),
- padding_left, padding_right,
- padding_top, padding_bottom,
- stride_width, stride_height,
- filter_width, filter_height, activation,
- reinterpret_cast<float*>(output.buffer),
- outShape);
- }
- } break;
-#endif // REF-ANN
+ Shape inputShape = input.shape();
+ int32_t input_width = getSizeOfDimension(inputShape, 2);
+ int32_t input_height = getSizeOfDimension(inputShape, 1);
+ calculateExplicitPadding(input_width, stride_width, filter_width, padding_implicit,
+ &padding_left, &padding_right);
+ calculateExplicitPadding(input_height, stride_height, filter_height, padding_implicit,
+ &padding_top, &padding_bottom);
+ }
+
+ RunTimeOperandInfo &output = mOperands[outs[0]];
+ Shape outShape = output.shape();
+
+ if (input.type == OperandType::TENSOR_FLOAT32)
+ {
+ success = genericPoolingPrepare(input.shape(), padding_left, padding_right, padding_top,
+ padding_bottom, stride_width, stride_height, filter_width,
+ filter_height, &outShape) &&
+ setInfoAndAllocateIfNeeded(&output, outShape) &&
+ l2PoolFloat32(reinterpret_cast<const float *>(input.buffer), input.shape(),
+ padding_left, padding_right, padding_top, padding_bottom,
+ stride_width, stride_height, filter_width, filter_height,
+ activation, reinterpret_cast<float *>(output.buffer), outShape);
+ }
+ }
+ break;
case OperationType::MAX_POOL_2D:
{
const size_t inCount = ins.size();