From: Andreas Beckmann Date: Sun, 2 Apr 2023 23:08:50 +0000 (+0100) Subject: HACK! regression/struct_kernel_arguments fails on i686 X-Git-Tag: archive/raspbian/3.1-3+deb12u1+rpi1^2~7 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=56fae1d2742848187f8335bfad4fd1ee0d4518bf;p=pocl.git HACK! regression/struct_kernel_arguments fails on i686 141/143 Test #85: regression/struct_kernel_arguments ..................................................***Failed Error regular expression found in output. Regex=[FAIL] 4.58 sec CMake Error at /build/pocl-1.4/cmake/run_test.cmake:34 (message): FAIL: Test exited with nonzero code (1): /build/pocl-1.4/obj-i686-linux-gnu/tests/regression/test_structs_as_args STDOUT: F(4: 0 != 5) F(5: -2147483648 != 6) F(6: 0 != 7) F(7: 0 != 8) STDERR: -- OK Bug: https://github.com/pocl/pocl/issues/801 Bug: https://github.com/KhronosGroup/OpenCL-Headers/issues/149 Forwarded: not-needed Gbp-Pq: Name test_structs_as_args.patch --- diff --git a/tests/regression/CMakeLists.txt b/tests/regression/CMakeLists.txt index c81fcf7..1efae05 100644 --- a/tests/regression/CMakeLists.txt +++ b/tests/regression/CMakeLists.txt @@ -272,6 +272,13 @@ add_test_pocl(NAME "regression/autolocals_in_constexprs" COMMAND "test_autolocal add_test_pocl(NAME "regression/struct_kernel_arguments" COMMAND "test_structs_as_args") +if(0) +if(LLC_HOST_CPU STREQUAL "i686") + set_tests_properties("regression/struct_kernel_arguments" + PROPERTIES WILL_FAIL 1) +endif() +endif() + add_test_pocl(NAME "regression/vector_kernel_arguments" COMMAND "test_vectors_as_args") set(TCE_TESTS "regression/barrier_between_two_for_loops_LOOPS" diff --git a/tests/regression/test_structs_as_args.cpp b/tests/regression/test_structs_as_args.cpp index 1b5fc4f..8b32fae 100644 --- a/tests/regression/test_structs_as_args.cpp +++ b/tests/regression/test_structs_as_args.cpp @@ -54,21 +54,33 @@ struct int_pair { cl_long b; }; +// i386 has a default alignment of 4 even for 64-bit types +#ifdef __i386__ +#define CL_LONG_ALIGNMENT __attribute__((aligned(8))) +#define CL_DOUBLE_ALIGNMENT __attribute__((aligned(8))) +#else +#define CL_LONG_ALIGNMENT +#define CL_DOUBLE_ALIGNMENT +#endif + struct test_struct { cl_int elementA; cl_int elementB; - cl_long elementC; + cl_long elementC CL_LONG_ALIGNMENT; cl_char elementD; - cl_long elementE; + cl_long elementE CL_LONG_ALIGNMENT; cl_float elementF; cl_short elementG; #ifdef _CL_DISABLE_DOUBLE - cl_long elementH; + cl_long elementH CL_LONG_ALIGNMENT; #else - cl_double elementH; + cl_double elementH CL_DOUBLE_ALIGNMENT; #endif }; +#undef CL_LONG_ALIGNMENT +#undef CL_DOUBLE_ALIGNMENT + static char kernelSourceCode[] = "typedef struct int_single {\n"