diff options
Diffstat (limited to 'src/runtime/CL/functions/CLReductionOperation.cpp')
-rw-r--r-- | src/runtime/CL/functions/CLReductionOperation.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/runtime/CL/functions/CLReductionOperation.cpp b/src/runtime/CL/functions/CLReductionOperation.cpp index 2e48897323..38f0a7523c 100644 --- a/src/runtime/CL/functions/CLReductionOperation.cpp +++ b/src/runtime/CL/functions/CLReductionOperation.cpp @@ -110,6 +110,11 @@ Status CLReductionOperation::validate(const ITensorInfo *input, const ITensorInf intermediate_kernel_op = ReductionOperation::MIN; last_kernel_op = ReductionOperation::MIN; break; + case ReductionOperation::MAX: + first_kernel_op = ReductionOperation::MAX; + intermediate_kernel_op = ReductionOperation::MAX; + last_kernel_op = ReductionOperation::MAX; + break; default: ARM_COMPUTE_ERROR("Not supported"); } @@ -211,6 +216,33 @@ void CLReductionOperation::configure(ICLTensor *input, ICLTensor *output, unsign } } break; + case ReductionOperation::MAX: + first_kernel_op = ReductionOperation::MAX; + intermediate_kernel_op = ReductionOperation::MAX; + last_kernel_op = ReductionOperation::MAX; + switch(input->info()->data_type()) + { + case DataType::F32: + { + pixelValue = PixelValue(-std::numeric_limits<float>::max()); + break; + } + case DataType::F16: + { + pixelValue = PixelValue(static_cast<half>(-65504.0f)); + break; + } + case DataType::QASYMM8: + { + pixelValue = PixelValue(0, input->info()->data_type(), input->info()->quantization_info()); + break; + } + default: + { + ARM_COMPUTE_ERROR("Unsupported DataType"); + } + } + break; default: ARM_COMPUTE_ERROR("Not supported"); } |