diff options
author | Viet-Hoa Do <viet-hoa.do@arm.com> | 2023-07-31 17:13:34 +0100 |
---|---|---|
committer | Viet-Hoa Do <viet-hoa.do@arm.com> | 2023-08-22 08:42:23 +0000 |
commit | e1c3b466960d5e3fd5a54871287f5eb6102bfb8c (patch) | |
tree | ca7b46273f564cd96bbb6832fbcd743ce4642301 /compute_kernel_writer/src/cl/CLHelpers.cpp | |
parent | 47a396e3aae96f2dcad44f4e0d6cb6b87b368395 (diff) | |
download | ComputeLibrary-e1c3b466960d5e3fd5a54871287f5eb6102bfb8c.tar.gz |
Add CKW writing methods for CL unary ops
* Add writing methods for:
- Assignment.
- Cast.
- Unary expression.
* Add corresponding tests.
Partially resolves: COMPMID-6388.
Signed-off-by: Viet-Hoa Do <viet-hoa.do@arm.com>
Change-Id: Ia654173e2e1ee9cddb7819980251e0591934439f
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10155
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-by: Jakub Sujak <jakub.sujak@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'compute_kernel_writer/src/cl/CLHelpers.cpp')
-rw-r--r-- | compute_kernel_writer/src/cl/CLHelpers.cpp | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/compute_kernel_writer/src/cl/CLHelpers.cpp b/compute_kernel_writer/src/cl/CLHelpers.cpp index 08108e383f..f62e1c28e6 100644 --- a/compute_kernel_writer/src/cl/CLHelpers.cpp +++ b/compute_kernel_writer/src/cl/CLHelpers.cpp @@ -21,10 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + #include "src/cl/CLHelpers.h" + #include "ckw/Error.h" #include "ckw/types/DataType.h" #include "ckw/types/TensorStorageType.h" +#include "src/types/DataTypeHelpers.h" namespace ckw { @@ -142,10 +145,46 @@ std::string cl_get_variable_storagetype_as_string(TensorStorageType storage) return res; } +std::tuple<bool, std::string> cl_get_unary_op(UnaryOp op) +{ + switch(op) + { + case UnaryOp::LogicalNot: + return { false, "!" }; + + case UnaryOp::BitwiseNot: + return { false, "~" }; + + case UnaryOp::Exp: + return { true, "exp" }; + + case UnaryOp::Tanh: + return { true, "tanh" }; + + case UnaryOp::Sqrt: + return { true, "sqrt" }; + + case UnaryOp::Erf: + return { true, "erf" }; + + case UnaryOp::Fabs: + return { true, "fabs" }; + + case UnaryOp::Log: + return { true, "log" }; + + case UnaryOp::Round: + return { true, "round" }; + + default: + CKW_THROW_MSG("Unsupported unary operation!"); + } +} + std::string cl_data_type_rounded_up_to_valid_vector_width(DataType dt, int32_t width) { - std::string data_type; - const int32_t w = cl_round_up_to_nearest_valid_vector_width(width); + std::string data_type; + const int32_t w = cl_round_up_to_nearest_valid_vector_width(width); data_type += cl_get_variable_datatype_as_string(dt, 1); if(w != 1) { |