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

Jan Vesely jan.vesely at rutgers.edu
Tue Sep 11 18:02:08 UTC 2018


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();
> +}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20180911/0d55095a/attachment.sig>


More information about the Piglit mailing list