[Piglit] [PATCH] cl: Add test for call stack realignment

Matt Arsenault arsenm2 at gmail.com
Tue Apr 3 22:03:49 UTC 2018


ping

> On Mar 29, 2018, at 10:35, Matt Arsenault <arsenm2 at 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
> +
> +[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 uint addr = (uint)&requires_align16;
> +    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
> 



More information about the Piglit mailing list