[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