diff options
author | Gunes Bayir <gunes.bayir@arm.com> | 2023-08-17 11:04:02 +0100 |
---|---|---|
committer | Gunes Bayir <gunes.bayir@arm.com> | 2023-08-30 15:45:59 +0000 |
commit | d5f9a1cf9f0340f3e6bf9ff00156fc2adb1fdca9 (patch) | |
tree | af23cff1cb3a504ee51676cd9bfc74b75934fef2 /compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp | |
parent | 91cb7336400acc857e20086a23692f99fe11be9c (diff) | |
download | ComputeLibrary-d5f9a1cf9f0340f3e6bf9ff00156fc2adb1fdca9.tar.gz |
Implement indirect load for buffer and CLImage
Add KernelWriter API functions for loading from an indirect buffer
Resolves: COMPMID-6390
Signed-off-by: Gunes Bayir <gunes.bayir@arm.com>
Change-Id: I45dbf88b25ec5caf2b458657ef20aacac9924745
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10192
Reviewed-by: Viet-Hoa Do <viet-hoa.do@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp')
-rw-r--r-- | compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp b/compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp index a5f0c17c16..55f88f4136 100644 --- a/compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp +++ b/compute_kernel_writer/src/cl/helpers/CLMemoryOpImage2dHelper.cpp @@ -104,6 +104,9 @@ void CLMemoryOpImage2dHelper::out_of_bound_initialize_y(const std::string &coord const TensorSamplerAddressModeY address_mode_y = _sampler->address_mode_y(); switch(address_mode_y) { + case TensorSamplerAddressModeY::SkipLessThanZero: + _writer->op_write_raw_code("if(" + coord + " >= 0)\n{\n"); + break; case TensorSamplerAddressModeY::ClampToBorderMaxOnly: case TensorSamplerAddressModeY::None: break; @@ -117,6 +120,9 @@ void CLMemoryOpImage2dHelper::out_of_bound_finalize_y() const TensorSamplerAddressModeY address_mode_y = _sampler->address_mode_y(); switch(address_mode_y) { + case TensorSamplerAddressModeY::SkipLessThanZero: + _writer->op_write_raw_code("}\n"); + break; case TensorSamplerAddressModeY::ClampToBorderMaxOnly: case TensorSamplerAddressModeY::None: break; @@ -153,6 +159,7 @@ std::string CLMemoryOpImage2dHelper::to_ls_image2d_sampler() const { case TensorSamplerAddressModeY::None: return "CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST"; + case TensorSamplerAddressModeY::SkipLessThanZero: case TensorSamplerAddressModeY::ClampToBorderMaxOnly: return "CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST"; default: |