diff options
Diffstat (limited to 'arm_compute/core/CL')
-rw-r--r-- | arm_compute/core/CL/CLKernelLibrary.h | 6 | ||||
-rw-r--r-- | arm_compute/core/CL/CLValidate.h | 23 |
2 files changed, 29 insertions, 0 deletions
diff --git a/arm_compute/core/CL/CLKernelLibrary.h b/arm_compute/core/CL/CLKernelLibrary.h index 97537c05d0..f25915f053 100644 --- a/arm_compute/core/CL/CLKernelLibrary.h +++ b/arm_compute/core/CL/CLKernelLibrary.h @@ -335,6 +335,12 @@ public: */ bool fp16_supported() const; + /** Returns true if int64_base_atomics extension is supported by the CL device + * + * @return true if the CL device supports int64_base_atomics extension + */ + bool int64_base_atomics_supported() const; + private: /** Load program and its dependencies. * diff --git a/arm_compute/core/CL/CLValidate.h b/arm_compute/core/CL/CLValidate.h index 6252f00d3e..a087b2ccd4 100644 --- a/arm_compute/core/CL/CLValidate.h +++ b/arm_compute/core/CL/CLValidate.h @@ -34,5 +34,28 @@ namespace arm_compute #define ARM_COMPUTE_RETURN_ERROR_ON_F16_UNSUPPORTED(tensor) \ ARM_COMPUTE_RETURN_ON_ERROR(::arm_compute::error_on_unsupported_fp16(__func__, __FILE__, __LINE__, tensor, CLKernelLibrary::get().fp16_supported())) +/** Return an error if int64_base_atomics extension is not supported by the device. + * + * @param[in] function Function in which the error occurred. + * @param[in] file Name of the file where the error occurred. + * @param[in] line Line on which the error occurred. + * + * @return Status + */ +inline arm_compute::Status error_on_unsupported_int64_base_atomics(const char *function, const char *file, const int line) +{ + if(!CLKernelLibrary::get().int64_base_atomics_supported()) + { + return ARM_COMPUTE_CREATE_ERROR_LOC(arm_compute::ErrorCode::UNSUPPORTED_EXTENSION_USE, function, file, line, "Atomic functions are not supported"); + } + return arm_compute::Status{}; +} + +#define ARM_COMPUTE_ERROR_ON_INT64_BASE_ATOMICS_UNSUPPORTED() \ + ARM_COMPUTE_ERROR_THROW_ON(::arm_compute::error_on_unsupported_int64_base_atomics(__func__, __FILE__, __LINE__)); + +#define ARM_COMPUTE_RETURN_ERROR_ON_INT64_BASE_ATOMICS_UNSUPPORTED() \ + ARM_COMPUTE_RETURN_ON_ERROR(::arm_compute::error_on_unsupported_int64_base_atomics(__func__, __FILE__, __LINE__)); + } // namespace arm_compute #endif /* __ARM_COMPUTE_CL_VALIDATE_H__ */ |