On Mon, 2018-09-10 at 20:36 -0700, Matt Arsenault wrote: > v2: Use uintptr_t > > v3: Formatting > > v4: More uintptr_t
pushed, thanks. Jan > --- > tests/cl/program/execute/realign-stack.cl | 93 +++++++++++++++++++++++ > 1 file changed, 93 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..eb1a23f20 > --- /dev/null > +++ b/tests/cl/program/execute/realign-stack.cl > @@ -0,0 +1,93 @@ > +/*! > + > +[config] > +name: call with stack realignment > + > +[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 > + > + > +[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 > + > +[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 > + > +[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 > + > + > +!*/ > + > +// 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 uintptr_t addr = (uintptr_t)&requires_align16; > + return (addr & 15) == 0; > +} > + > +NOINLINE > +int test_stack_object_alignment32() { > + volatile int8 requires_align32 = 0; > + volatile uintptr_t addr = (uintptr_t)&requires_align32; > + return (addr & 31) == 0; > +} > + > +NOINLINE > +int test_stack_object_alignment64() { > + volatile int16 requires_align64 = 0; > + volatile uintptr_t addr = (uintptr_t)&requires_align64; > + return (addr & 63) == 0; > +} > + > +NOINLINE > +int test_stack_object_alignment128() { > + volatile long16 requires_align128 = 0; > + volatile uintptr_t addr = (uintptr_t)&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(); > +}
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit