ping

> On Aug 22, 2018, at 15:41, Matt Arsenault <arse...@gmail.com> wrote:
> 
> Also fixes apparently missing coverage for special
> input arguments not passed in registers.
> ---
> tests/cl/program/execute/calls-workitem-id.cl | 136 ++++++++++++++++++
> 1 file changed, 136 insertions(+)
> 
> diff --git a/tests/cl/program/execute/calls-workitem-id.cl 
> b/tests/cl/program/execute/calls-workitem-id.cl
> index 7edfad7e9..b42c85959 100644
> --- a/tests/cl/program/execute/calls-workitem-id.cl
> +++ b/tests/cl/program/execute/calls-workitem-id.cl
> @@ -38,6 +38,56 @@ arg_out: 2 buffer uint[64] \
>   1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 \
>   1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
> 
> +[test]
> +name: Callee function stack passed get_local_id
> +kernel_name: kernel_call_too_many_argument_regs_get_local_id_012
> +dimensions: 3
> +global_size: 8 4 2
> +local_size: 8 4 2
> +
> +arg_out: 0 buffer uint[64] \
> +  0  1  2  3  4  5  6  7  0  1  2  3  4  5  6  7 \
> +  0  1  2  3  4  5  6  7  0  1  2  3  4  5  6  7 \
> +  0  1  2  3  4  5  6  7  0  1  2  3  4  5  6  7 \
> +  0  1  2  3  4  5  6  7  0  1  2  3  4  5  6  7
> +
> +arg_out: 1 buffer uint[64] \
> +  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1 \
> +  2  2  2  2  2  2  2  2  3  3  3  3  3  3  3  3 \
> +  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1 \
> +  2  2  2  2  2  2  2  2  3  3  3  3  3  3  3  3
> +
> +arg_out: 2 buffer uint[64] \
> +  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 \
> +  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 \
> +  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 \
> +  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
> +
> +[test]
> +name: Callee function stack passed get_local_id with byval
> +kernel_name: kernel_call_too_many_argument_regs_byval_get_local_id_012
> +dimensions: 3
> +global_size: 8 4 2
> +local_size: 8 4 2
> +
> +arg_out: 0 buffer uint[64] \
> +  45  46  47  48  49  50  51  52  45  46  47  48  49  50  51  52  \
> +  45  46  47  48  49  50  51  52  45  46  47  48  49  50  51  52  \
> +  45  46  47  48  49  50  51  52  45  46  47  48  49  50  51  52  \
> +  45  46  47  48  49  50  51  52  45  46  47  48  49  50  51  52
> +
> +arg_out: 1 buffer uint[64] \
> +  47  47  47  47  47  47  47  47  48  48  48  48  48  48  48  48 \
> +  49  49  49  49  49  49  49  49  50  50  50  50  50  50  50  50 \
> +  47  47  47  47  47  47  47  47  48  48  48  48  48  48  48  48 \
> +  49  49  49  49  49  49  49  49  50  50  50  50  50  50  50  50
> +
> +arg_out: 2 buffer uint[64] \
> +  50  50  50  50  50  50  50  50  50  50  50  50  50  50  50  50 \
> +  50  50  50  50  50  50  50  50  50  50  50  50  50  50  50  50 \
> +  51  51  51  51  51  51  51  51  51  51  51  51  51  51  51  51 \
> +  51  51  51  51  51  51  51  51  51  51  51  51  51  51  51  51
> +
> !*/
> 
> #define NOINLINE __attribute__((noinline))
> @@ -75,3 +125,89 @@ kernel void kernel_call_pass_get_global_id_012(global 
> uint *out0,
> {
>     func_get_global_id_012(out0, out1, out2);
> }
> +
> +// On amdgcn, this will require the workitem IDs be passed as values
> +// on the stack after the arguments.
> +NOINLINE
> +uint3 too_many_argument_regs_get_local_id_012(
> +     int arg0, int arg1, int arg2, int arg3,
> +     int arg4, int arg5, int arg6, int arg7,
> +     int arg8, int arg9, int arg10, int arg11,
> +     int arg12, int arg13, int arg14, int arg15,
> +     int arg16, int arg17, int arg18, int arg19,
> +     int arg20, int arg21, int arg22, int arg23,
> +     int arg24, int arg25, int arg26, int arg27,
> +     int arg28, int arg29, int arg30, int arg31)
> +{
> +     uint3 id;
> +     id.x = get_local_id(0);
> +     id.y = get_local_id(1);
> +     id.z = get_local_id(2);
> +     return id;
> +}
> +
> +kernel void kernel_call_too_many_argument_regs_get_local_id_012(global uint* 
> out0, global uint* out1, global uint* out2)
> +{
> +     uint id0 = get_global_id(0);
> +     uint id1 = get_global_id(1);
> +     uint id2 = get_global_id(2);
> +     uint flat_id = (id2 * get_global_size(1) + id1) * get_global_size(0) + 
> id0;
> +
> +     uint3 result = too_many_argument_regs_get_local_id_012(
> +             1234, 999, 42, 5555, 8888, 9009, 777, 4242,
> +             202020, 6359, 8344, 1443, 552323, 33424, 666, 98765,
> +             2222, 232556, 57777, 934121, 94991, 1337, 0xdead, 0xbeef,
> +             0x5555, 0x3333, 0x666, 0x4141, 0x1234, 0x8888, 0xaaaa, 0xbbbb);
> +
> +     out0[flat_id] = result.x;
> +     out1[flat_id] = result.y;
> +     out2[flat_id] = result.z;
> +}
> +
> +
> +typedef struct ByValStruct {
> +     long array[9];
> +} ByValStruct;
> +
> +// Same as previous, with an additional byval passed argument.
> +NOINLINE
> +uint3 too_many_argument_regs_byval_get_local_id_012(
> +     ByValStruct byval_arg,
> +     int arg0, int arg1, int arg2, int arg3,
> +     int arg4, int arg5, int arg6, int arg7,
> +     int arg8, int arg9, int arg10, int arg11,
> +     int arg12, int arg13, int arg14, int arg15,
> +     int arg16, int arg17, int arg18, int arg19,
> +     int arg20, int arg21, int arg22, int arg23,
> +     int arg24, int arg25, int arg26, int arg27,
> +     int arg28, int arg29, int arg30, int arg31)
> +{
> +     uint3 id;
> +     id.x = get_local_id(0) + byval_arg.array[3]; // + 42 + 3
> +     id.y = get_local_id(1) + byval_arg.array[5]; // + 42 + 5
> +     id.z = get_local_id(2) + byval_arg.array[8]; // + 42 + 8
> +     return id;
> +}
> +
> +kernel void kernel_call_too_many_argument_regs_byval_get_local_id_012(global 
> uint* out0, global uint* out1, global uint* out2)
> +{
> +     uint id0 = get_global_id(0);
> +     uint id1 = get_global_id(1);
> +     uint id2 = get_global_id(2);
> +     uint flat_id = (id2 * get_global_size(1) + id1) * get_global_size(0) + 
> id0;
> +
> +     ByValStruct byval;
> +     for (int i = 0; i < 9; ++i)
> +             byval.array[i] = 42 + i;
> +
> +     uint3 result = too_many_argument_regs_byval_get_local_id_012(
> +             byval,
> +             1234, 999, 42, 5555, 8888, 9009, 777, 4242,
> +             202020, 6359, 8344, 1443, 552323, 33424, 666, 98765,
> +             2222, 232556, 57777, 934121, 94991, 1337, 0xdead, 0xbeef,
> +             0x5555, 0x3333, 0x666, 0x4141, 0x1234, 0x8888, 0xaaaa, 0xbbbb);
> +
> +     out0[flat_id] = result.x;
> +     out1[flat_id] = result.y;
> +     out2[flat_id] = result.z;
> +}
> -- 
> 2.17.1
> 

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to