aboutsummaryrefslogtreecommitdiff
path: root/src/core/CL/kernels/CLElementwiseOperationKernel.h
diff options
context:
space:
mode:
authorSang-Hoon Park <sang-hoon.park@arm.com>2020-11-13 13:44:13 +0000
committerSang-Hoon Park <sang-hoon.park@arm.com>2020-11-18 12:25:16 +0000
commit75eea338eb232ebdafa2fb84d22e711b5f964785 (patch)
treed069d26864c3ae180ff526262a1436af839a5bb0 /src/core/CL/kernels/CLElementwiseOperationKernel.h
parent10a73f5c0cc15ffba532bc923c6471f67af0959a (diff)
downloadComputeLibrary-75eea338eb232ebdafa2fb84d22e711b5f964785.tar.gz
COMPMID-3961: Add Logical OR/AND/NOT operator on CL
Change-Id: I612aeed6affa17624fb9044964dd59c41a5c9888 Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4448 Reviewed-by: Pablo Marquez Tello <pablo.tello@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/CL/kernels/CLElementwiseOperationKernel.h')
-rw-r--r--src/core/CL/kernels/CLElementwiseOperationKernel.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/core/CL/kernels/CLElementwiseOperationKernel.h b/src/core/CL/kernels/CLElementwiseOperationKernel.h
index 75030cf3a3..e24d1564a8 100644
--- a/src/core/CL/kernels/CLElementwiseOperationKernel.h
+++ b/src/core/CL/kernels/CLElementwiseOperationKernel.h
@@ -26,6 +26,7 @@
#include "arm_compute/core/Types.h"
#include "src/core/CL/ICLKernel.h"
+#include "src/core/KernelTypes.h"
namespace arm_compute
{
@@ -99,6 +100,49 @@ private:
ITensorInfo *_output; /**< Destination tensor info */
};
+class CLLogicalBinaryKernel : public CLElementwiseOperationKernel
+{
+public:
+ /** Default constructor */
+ CLLogicalBinaryKernel() = default;
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CLLogicalBinaryKernel(const CLLogicalBinaryKernel &) = delete;
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ CLLogicalBinaryKernel &operator=(const CLLogicalBinaryKernel &) = delete;
+ /** Allow instances of this class to be moved */
+ CLLogicalBinaryKernel(CLLogicalBinaryKernel &&) = default;
+ /** Allow instances of this class to be moved */
+ CLLogicalBinaryKernel &operator=(CLLogicalBinaryKernel &&) = default;
+ /** Default destructor */
+ ~CLLogicalBinaryKernel() = default;
+ /** Function to configure kernel
+ *
+ * @param[in] compile_context The compile context to be used.
+ * @param[in] op Logical binary operation to be executed.
+ * @param[in] input1 First tensor input info. Data types supported: U8.
+ * @param[in] input2 Second tensor input info. Data types supported: U8.
+ * @param[in] output Output tensor info. Data types supported: U8.
+ */
+ void configure(const CLCompileContext &compile_context, kernels::LogicalOperation op, ITensorInfo *input1, ITensorInfo *input2, ITensorInfo *output);
+ /** Static function to check if the given configuration is valid for this kernel
+ *
+ * @param[in] op Logical binary operation to be executed.
+ * @param[in] input1 First tensor input info. Data types supported: U8.
+ * @param[in] input2 Second tensor input info. Data types supported: U8.
+ * @param[in] output Output tensor info. Data types supported: U8.
+ */
+ static Status validate(kernels::LogicalOperation op, const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output);
+
+private:
+ // Inherited methods overridden:
+ std::string name() override;
+ std::pair<Status, Window> validate_and_configure_window(ITensorInfo &input1, ITensorInfo &input2, ITensorInfo &output) override;
+ CLBuildOptions generate_build_options(const ITensorInfo &input1, const ITensorInfo &input2, const ITensorInfo &output) override;
+ std::string generate_id_for_tuning(const std::string &kernel_name, const ITensorInfo &input1, const ITensorInfo &output) override;
+
+ kernels::LogicalOperation _op{ kernels::LogicalOperation::Unknown };
+};
+
/** Addition operation */
class CLSaturatedArithmeticOperationKernel : public CLElementwiseOperationKernel
{