[Piglit] [PATCH 1/2] CL: refactor genclbuiltins.py to allow TSS functions with different arg types
Aaron Watry
awatry at gmail.com
Wed Dec 17 11:29:45 PST 2014
Ping.
The other patches I have no qualms about pushing, but I wouldn't mind
getting review for this one.
--Aaron
On Fri, Dec 12, 2014 at 3:05 PM, Aaron Watry <awatry at gmail.com> wrote:
> Before, if you had a function that had 2-3 args, it was assumed that all
> arguments were of the same base type.
>
> Now, that assumption is removed and we used the argument type defined in the
> test profile.
>
> This will be useful in the next commit, where ldexp(floatN,int) is introduced.
>
> This patch updates all multi-argument kernel generators to take an array of
> input types, instead of assuming that all inputs are of the same base type as
> the first argument.
> ---
> generated_tests/genclbuiltins.py | 44 +++++++++++++++++++++++-----------------
> 1 file changed, 25 insertions(+), 19 deletions(-)
>
> diff --git a/generated_tests/genclbuiltins.py b/generated_tests/genclbuiltins.py
> index 571930d..6a595ff 100644
> --- a/generated_tests/genclbuiltins.py
> +++ b/generated_tests/genclbuiltins.py
> @@ -139,44 +139,44 @@ def gen_kernel_1_arg(f, fnName, inType, outType):
> gen_kernel(f, fnName, [inType], outType, [vecSize], '')
>
>
> -# 2 argument kernel with input types that match
> -def gen_kernel_2_arg_same_type(f, fnName, inType, outType):
> +# 2 argument kernel with input types that match their vector size
> +def gen_kernel_2_arg_same_size(f, fnName, inTypes, outType):
> for vecSize in ALL_WIDTHS:
> - gen_kernel(f, fnName, [inType, inType], outType, [vecSize, vecSize],
> + gen_kernel(f, fnName, inTypes, outType, [vecSize, vecSize],
> '')
>
>
> # 2 argument kernel with 1 vector and one scalar input argument
> -def gen_kernel_2_arg_mixed_size(f, fnName, inType, outType):
> +def gen_kernel_2_arg_mixed_size(f, fnName, inTypes, outType):
> for vecSize in VEC_WIDTHS:
> - gen_kernel(f, fnName, [inType, inType], outType, [vecSize, 1], 'tss_')
> + gen_kernel(f, fnName, inTypes, outType, [vecSize, 1], 'tss_')
>
>
> # 2 argument kernel with 1 vector and one scalar input argument with multiple
> # input data types
> -def gen_kernel_2_arg_mixed_sign(f, fnName, inType1, inType2, outType):
> +def gen_kernel_2_arg_mixed_sign(f, fnName, inTypes, outType):
> for vecSize in ALL_WIDTHS:
> - gen_kernel(f, fnName, [inType1, inType2], outType, [vecSize, vecSize],
> + gen_kernel(f, fnName, inTypes, outType, [vecSize, vecSize],
> '')
>
>
> # 3-argument built-in functions
>
>
> -def gen_kernel_3_arg_same_type(f, fnName, inType, outType):
> +def gen_kernel_3_arg_same_type(f, fnName, inTypes, outType):
> for vecSize in ALL_WIDTHS:
> - gen_kernel(f, fnName, [inType, inType, inType], outType,
> + gen_kernel(f, fnName, inTypes, outType,
> [vecSize, vecSize, vecSize], ''
> )
>
> -def gen_kernel_3_arg_mixed_size_tss(f, fnName, inType, outType):
> +def gen_kernel_3_arg_mixed_size_tss(f, fnName, inTypes, outType):
> for vecSize in VEC_WIDTHS:
> - gen_kernel(f, fnName, [inType, inType, inType], outType,
> + gen_kernel(f, fnName, inTypes, outType,
> [vecSize, 1, 1], 'tss_')
>
> -def gen_kernel_3_arg_mixed_size_tts(f, fnName, inType, outType):
> +def gen_kernel_3_arg_mixed_size_tts(f, fnName, inTypes, outType):
> for vecSize in VEC_WIDTHS:
> - gen_kernel(f, fnName, [inType, inType, inType], outType,
> + gen_kernel(f, fnName, inTypes, outType,
> [vecSize, vecSize, 1], 'tts_')
>
>
> @@ -189,21 +189,27 @@ def generate_kernels(f, dataType, fnName, fnDef):
> return
>
> if (len(argTypes) == 3 and not fnName is 'upsample'):
> - gen_kernel_2_arg_same_type(f, fnName, argTypes[1], argTypes[0])
> + gen_kernel_2_arg_same_size(f, fnName,
> + [argTypes[1], argTypes[2]], argTypes[0])
> if (fnDef['function_type'] is 'tss'):
> - gen_kernel_2_arg_mixed_size(f, fnName, argTypes[1], argTypes[0])
> + gen_kernel_2_arg_mixed_size(f, fnName,
> + [argTypes[1], argTypes[2]], argTypes[0])
> return
>
> if (len(argTypes) == 4):
> - gen_kernel_3_arg_same_type(f, fnName, argTypes[1], argTypes[0])
> + gen_kernel_3_arg_same_type(f, fnName,
> + [argTypes[1], argTypes[2], argTypes[3]], argTypes[0])
> if (fnDef['function_type'] is 'tss'):
> - gen_kernel_3_arg_mixed_size_tss(f, fnName, argTypes[1], argTypes[0])
> + gen_kernel_3_arg_mixed_size_tss(f, fnName,
> + [argTypes[1], argTypes[2], argTypes[3]], argTypes[0])
> if (fnDef['function_type'] is 'tts'):
> - gen_kernel_3_arg_mixed_size_tts(f, fnName, argTypes[1], argTypes[0])
> + gen_kernel_3_arg_mixed_size_tts(f, fnName,
> + [argTypes[1], argTypes[2], argTypes[3]], argTypes[0])
> return
>
> if (fnName is 'upsample'):
> - gen_kernel_2_arg_mixed_sign(f, fnName, argTypes[1], argTypes[2],
> + gen_kernel_2_arg_mixed_sign(f, fnName,
> + [argTypes[1], argTypes[2]],
> argTypes[0])
> return
>
> --
> 2.1.0
>
More information about the Piglit
mailing list