Factor out GetTernaryKernel (#1511)

Use a common function to create the kernel source code for testing
3-argument math builtins.  This reduces code duplication.  1-argument
and 2-argument math kernel construction will be factored out in future
work.

Change the kernels to use preprocessor defines for argument types and
undef values, to make the CTS code easier to read.

Co-authored-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>

Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Co-authored-by: Marco Antognini <marco.antognini@arm.com>
This commit is contained in:
Sven van Haastregt
2022-10-04 17:28:29 +01:00
committed by GitHub
parent 07b055cd68
commit d9a938b698
7 changed files with 216 additions and 348 deletions

View File

@@ -20,6 +20,7 @@
#include "utility.h"
#include <array>
#include <string>
#include <vector>
// Array of thread-specific kernels for each vector size.
@@ -31,6 +32,22 @@ using Programs = std::array<clProgramWrapper, VECTOR_SIZE_COUNT>;
// Array of buffers for each vector size.
using Buffers = std::array<clMemWrapper, VECTOR_SIZE_COUNT>;
// Types supported for kernel code generation.
enum class ParameterType
{
Float,
Double,
};
// Return kernel name suffixed with vector size.
std::string GetKernelName(int vector_size_index);
// Generate kernel code for the given builtin function/operator.
std::string GetTernaryKernel(const std::string &kernel_name,
const char *builtin, ParameterType retType,
ParameterType type1, ParameterType type2,
ParameterType type3, int vector_size_index);
// Information to generate OpenCL kernels.
struct BuildKernelInfo
{