aboutsummaryrefslogtreecommitdiff
path: root/compute_kernel_writer/src/KernelWriter.cpp
diff options
context:
space:
mode:
authorViet-Hoa Do <viet-hoa.do@arm.com>2023-08-24 11:48:19 +0100
committerViet-Hoa Do <viet-hoa.do@arm.com>2023-08-29 13:42:21 +0000
commit2d0c2f5700434a4b0c3345c71a3a45825a0e6766 (patch)
treec4c9613cdc065b4604cadd21fd1953d877f3c7b2 /compute_kernel_writer/src/KernelWriter.cpp
parent806b8e856911e6691ede6725c7e2a0e7e0dd6e95 (diff)
downloadComputeLibrary-2d0c2f5700434a4b0c3345c71a3a45825a0e6766.tar.gz
Add CKW flow control writing methods
* Structures: if/else/else if, for, return. * Add corresponding tests. Partially resolves: COMPMID-6387 Signed-off-by: Viet-Hoa Do <viet-hoa.do@arm.com> Change-Id: I2912ccaf46f836907f21bb53fa82bcc1f48dd224 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10199 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: SiCong Li <sicong.li@arm.com> Reviewed-by: Gunes Bayir <gunes.bayir@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'compute_kernel_writer/src/KernelWriter.cpp')
-rw-r--r--compute_kernel_writer/src/KernelWriter.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/compute_kernel_writer/src/KernelWriter.cpp b/compute_kernel_writer/src/KernelWriter.cpp
index 21a61d73bf..fb0e62c8ce 100644
--- a/compute_kernel_writer/src/KernelWriter.cpp
+++ b/compute_kernel_writer/src/KernelWriter.cpp
@@ -51,11 +51,35 @@ std::unique_ptr<KernelWriter> KernelWriter::create_instance(TargetArchitecture a
}
}
+int32_t KernelWriter::new_id_space()
+{
+ _id_space = ++_last_created_id_space;
+
+ return _id_space;
+}
+
int32_t KernelWriter::id_space() const
{
return _id_space;
}
+KernelWriter &KernelWriter::id_space(int32_t value)
+{
+ CKW_ASSERT(value <= _last_created_id_space);
+
+ _id_space = value;
+
+ return *this;
+}
+
+void KernelWriter::write_body(const std::function<void()> &body)
+{
+ const auto curr_id_space = id_space();
+ new_id_space();
+ body();
+ id_space(curr_id_space);
+}
+
std::string KernelWriter::generate_full_name(const std::string &name) const
{
return "G" + std::to_string(id_space()) + "__" + name;