> On Apr 4, 2018, at 15:52, Jan Vesely <[email protected]> wrote:
>
> On Tue, 2018-04-03 at 18:03 -0400, Matt Arsenault wrote:
>> ping
>>
>>> On Mar 29, 2018, at 10:35, Matt Arsenault <[email protected]> wrote:
>>>
>>> ---
>>> tests/cl/program/execute/realign-stack.cl | 96
>>> +++++++++++++++++++++++++++++++
>>> 1 file changed, 96 insertions(+)
>>> create mode 100644 tests/cl/program/execute/realign-stack.cl
>>>
>>> diff --git a/tests/cl/program/execute/realign-stack.cl
>>> b/tests/cl/program/execute/realign-stack.cl
>>> new file mode 100644
>>> index 000000000..ed62ea211
>>> --- /dev/null
>>> +++ b/tests/cl/program/execute/realign-stack.cl
>>> @@ -0,0 +1,96 @@
>>> +/*!
>>> +
>>> +[config]
>>> +name: call with stack realignment
>
> why does this care about call?
> CLC requires types to be aligned to next power of 2 of their size
> irrespective of the location. HOw is this different from any other
> __private variable declaration?
>
This is testing that requirement when the object resides in a frame that isn’t
the entry point / kernel. The problem was this requirement wasn’t being
respected because the frame itself wasn’t aligned, so the absolute address of
the object wasn’t properly aligned.
>>> +
>>> +[test]
>>> +name: call stack realignment 16
>>> +kernel_name: kernel_call_stack_realign16_func
>>> +dimensions: 1
>>> +global_size: 1 0 0
>>> +
>>> +arg_out: 0 buffer int[1] \
>>> + 1
>
> redundant newline
>
>>> +
>>> +
>>> +[test]
>>> +name: call stack realignment 32
>>> +kernel_name: kernel_call_stack_realign32_func
>>> +dimensions: 1
>>> +global_size: 1 0 0
>>> +
>>> +arg_out: 0 buffer int[1] \
>>> + 1
>
> same here
>
>>> +
>>> +[test]
>>> +name: call stack realignment 64
>>> +kernel_name: kernel_call_stack_realign64_func
>>> +dimensions: 1
>>> +global_size: 1 0 0
>>> +
>>> +arg_out: 0 buffer int[1] \
>>> + 1
>
> same here
>
>>> +
>>> +[test]
>>> +name: call stack realignment 128
>>> +kernel_name: kernel_call_stack_realign128_func
>>> +dimensions: 1
>>> +global_size: 1 0 0
>>> +
>>> +arg_out: 0 buffer int[1] \
>>> + 1
>
> and here
>
>>> +
>>> +!*/
>>> +
>>> +// Make sure the absolute private address of stack objects in callee
>>> +// functions is properly aligned.
>>> +
>>> +#define NOINLINE __attribute__((noinline))
>>> +
>>> +NOINLINE
>>> +int test_stack_object_alignment16() {
>>> + volatile int4 requires_align16 = 0;
>>> + volatile uint addr = (uint)&requires_align16;
>
> this should use uintptr_t. why is the addr variable volatile?
> same in the below tests.
Optimizations can use the alignment information to conclude this is always
true, so the volatile load from memory prevents this
_______________________________________________
Piglit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/piglit