aboutsummaryrefslogtreecommitdiff
path: root/src/core/CL/kernels/CLPermuteKernel.cpp
diff options
context:
space:
mode:
authorMichele Di Giorgio <michele.digiorgio@arm.com>2018-02-02 15:58:01 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:45:42 +0000
commitb28f329d0cdc2e5f2f72fd3ecc1913c6b913aee8 (patch)
tree7264618fb656649b3e1b206f0b71ac634a94c066 /src/core/CL/kernels/CLPermuteKernel.cpp
parent2d40555fff73ac8c23b9a21c3b4fc2a9fa01eb2e (diff)
downloadComputeLibrary-b28f329d0cdc2e5f2f72fd3ecc1913c6b913aee8.tar.gz
COMPMID-754: Add validation method to CLPermute kernel
Change-Id: If6f3888a035b557a6c369efa22b56d6c8d3efbd3 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/118789 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Diffstat (limited to 'src/core/CL/kernels/CLPermuteKernel.cpp')
-rw-r--r--src/core/CL/kernels/CLPermuteKernel.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/core/CL/kernels/CLPermuteKernel.cpp b/src/core/CL/kernels/CLPermuteKernel.cpp
index 1f36445732..983754335e 100644
--- a/src/core/CL/kernels/CLPermuteKernel.cpp
+++ b/src/core/CL/kernels/CLPermuteKernel.cpp
@@ -46,21 +46,30 @@ TensorShape get_output_shape(const ITensorInfo *input, const PermutationVector &
permute(output_shape, perm);
return output_shape;
}
-} // namespace
-void CLPermuteKernel::configure(const ICLTensor *input, ICLTensor *output, const PermutationVector &perm)
+Status validate_arguments(const ITensorInfo *input, const ITensorInfo *output, const PermutationVector &perm)
{
- ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U8, DataType::S8, DataType::QS8, DataType::QASYMM8,
- DataType::U16, DataType::S16, DataType::QS16,
- DataType::U32, DataType::S32,
- DataType::F16, DataType::F32);
- ARM_COMPUTE_ERROR_ON_MSG(input->info()->num_dimensions() < 3, "Invalid input size!");
- ARM_COMPUTE_ERROR_ON_MSG(
+ ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U8, DataType::S8, DataType::QS8, DataType::QASYMM8,
+ DataType::U16, DataType::S16, DataType::QS16,
+ DataType::U32, DataType::S32,
+ DataType::F16, DataType::F32);
+ ARM_COMPUTE_RETURN_ERROR_ON_MSG((input->num_dimensions() < 3), "Invalid input size!");
+ ARM_COMPUTE_RETURN_ERROR_ON_MSG(
(perm.num_dimensions() != 3 && ((perm[0] != 2 && perm[1] != 0 && perm[2] != 1) || (perm[0] != 1 && perm[1] != 2 && perm[2] != 0))) && (perm.num_dimensions() != 4 && ((perm[0] != 2 && perm[1] != 0
&& perm[2] != 1)
|| (perm[0] != 1 && perm[1] != 2 && perm[2] != 0))),
"Only [2, 0, 1],[1, 2, 0] and [3, 2, 0, 1] permutation is supported");
+ ARM_COMPUTE_UNUSED(output);
+ return Status{};
+}
+} // namespace
+
+void CLPermuteKernel::configure(const ICLTensor *input, ICLTensor *output, const PermutationVector &perm)
+{
+ ARM_COMPUTE_ERROR_ON_NULLPTR(input, output);
+ ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(input->info(), output->info(), perm));
+
_input = input;
_output = output;
_perm = perm;
@@ -101,6 +110,14 @@ void CLPermuteKernel::configure(const ICLTensor *input, ICLTensor *output, const
ICLKernel::configure(win);
}
+Status CLPermuteKernel::validate(const ITensorInfo *input, const ITensorInfo *output, const PermutationVector &perm)
+{
+ ARM_COMPUTE_ERROR_ON_NULLPTR(input, output);
+ ARM_COMPUTE_RETURN_ERROR_ON(validate_arguments(input, output, perm));
+
+ return Status{};
+}
+
void CLPermuteKernel::run(const Window &window, cl::CommandQueue &queue)
{
ARM_COMPUTE_ERROR_ON_UNCONFIGURED_KERNEL(this);