On Tue, 2018-04-03 at 18:03 -0400, Matt Arsenault wrote: > ping > > > On Mar 29, 2018, at 10:35, Matt Arsenault <arse...@gmail.com> 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? > > + > > +[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. Jan > > + return (addr & 15) == 0; > > +} > > + > > +NOINLINE > > +int test_stack_object_alignment32() { > > + volatile int8 requires_align32 = 0; > > + volatile uint addr = (uint)&requires_align32; > > + return (addr & 31) == 0; > > +} > > + > > +NOINLINE > > +int test_stack_object_alignment64() { > > + volatile int16 requires_align64 = 0; > > + volatile uint addr = (uint)&requires_align64; > > + return (addr & 63) == 0; > > +} > > + > > +NOINLINE > > +int test_stack_object_alignment128() { > > + volatile long16 requires_align128 = 0; > > + volatile uint addr = (uint)&requires_align128; > > + return (addr & 127) == 0; > > +} > > + > > +kernel void kernel_call_stack_realign16_func(global int* out) { > > + volatile int misalign_stack = 0; > > + *out = test_stack_object_alignment16(); > > +} > > + > > +kernel void kernel_call_stack_realign32_func(global int* out) { > > + volatile int misalign_stack = 0; > > + *out = test_stack_object_alignment32(); > > +} > > + > > +kernel void kernel_call_stack_realign64_func(global int* out) { > > + volatile int misalign_stack = 0; > > + *out = test_stack_object_alignment64(); > > +} > > + > > +kernel void kernel_call_stack_realign128_func(global int* out) { > > + volatile int misalign_stack = 0; > > + *out = test_stack_object_alignment128(); > > +} > > -- > > 2.14.1 > > > >
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit