diff options
author | Viet-Hoa Do <viet-hoa.do@arm.com> | 2023-08-24 11:48:19 +0100 |
---|---|---|
committer | Viet-Hoa Do <viet-hoa.do@arm.com> | 2023-08-29 13:42:21 +0000 |
commit | 2d0c2f5700434a4b0c3345c71a3a45825a0e6766 (patch) | |
tree | c4c9613cdc065b4604cadd21fd1953d877f3c7b2 /compute_kernel_writer/src/KernelWriter.cpp | |
parent | 806b8e856911e6691ede6725c7e2a0e7e0dd6e95 (diff) | |
download | ComputeLibrary-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.cpp | 24 |
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; |