diff options
author | Michele Di Giorgio <michele.digiorgio@arm.com> | 2018-04-25 11:58:07 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:51:50 +0000 |
commit | b8fc60fc9fe9ad6c48d9618fc65753fbe5813216 (patch) | |
tree | a9f271d73f573686ba29c724bb3a3cee4b6b203b /arm_compute/core/GPUTarget.h | |
parent | 62385bce6baacfa194cff9e6be6d8eaa73bc3fab (diff) | |
download | ComputeLibrary-b8fc60fc9fe9ad6c48d9618fc65753fbe5813216.tar.gz |
COMPMID-1086: Optimizing GCGEMM - Add helpers to get target GPU information
This patch moves some of the helper functions in CLHelpers.[h,cpp] to
GPUTarget.[h,cpp] in order to make them avaialable to both CL and GLES backends.
Change-Id: Ib89b05a2084b73eb643b32fac13b8367cc80b6a5
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/128988
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'arm_compute/core/GPUTarget.h')
-rw-r--r-- | arm_compute/core/GPUTarget.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/arm_compute/core/GPUTarget.h b/arm_compute/core/GPUTarget.h index 8a5ca80f49..2292a7834c 100644 --- a/arm_compute/core/GPUTarget.h +++ b/arm_compute/core/GPUTarget.h @@ -24,6 +24,10 @@ #ifndef __ARM_COMPUTE_GPUTARGET_H__ #define __ARM_COMPUTE_GPUTARGET_H__ +#include "arm_compute/core/Helpers.h" + +#include <string> + namespace arm_compute { /** Available GPU Targets */ @@ -45,5 +49,55 @@ enum class GPUTarget TTRX = 0x250, TBOX = 0x260 }; + +/** Enable bitwise operations on GPUTarget enumerations */ +template <> +struct enable_bitwise_ops<arm_compute::GPUTarget> +{ + static constexpr bool value = true; /**< Enabled. */ +}; + +/** Translates a given gpu device target to string. + * + * @param[in] target Given gpu target. + * + * @return The string describing the target. + */ +const std::string &string_from_target(GPUTarget target); + +/** Helper function to get the GPU target from a device name + * + * @param[in] device_name A device name + * + * @return the GPU target + */ +GPUTarget get_target_from_name(const std::string &device_name); + +/** Helper function to get the GPU arch + * + * @param[in] target GPU target + * + * @return the GPU target which shows the arch + */ +GPUTarget get_arch_from_target(GPUTarget target); +/** Helper function to check whether a gpu target is equal to the provided targets + * + * @param[in] target_to_check gpu target to check + * @param[in] target First target to compare against + * @param[in] targets (Optional) Additional targets to compare with + * + * @return True if the target is equal with at least one of the targets. + */ +template <typename... Args> +bool gpu_target_is_in(GPUTarget target_to_check, GPUTarget target, Args... targets) +{ + return (target_to_check == target) | gpu_target_is_in(target_to_check, targets...); +} + +/** Variant of gpu_target_is_in for comparing two targets */ +inline bool gpu_target_is_in(GPUTarget target_to_check, GPUTarget target) +{ + return target_to_check == target; +} } // namespace arm_compute #endif /* __ARM_COMPUTE_GPUTARGET_H__ */ |