From: Andreas Beckmann Date: Mon, 6 Dec 2021 17:49:48 +0000 (+0100) Subject: [PATCH 143/144] add printf and parameter passing test for ulongn vector types only X-Git-Tag: archive/raspbian/1.8-3+rpi1^2~11 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8275904357974d02f84dcdfb12b1185997545df6;p=pocl.git [PATCH 143/144] add printf and parameter passing test for ulongn vector types only another test primarily for inspecting the disassembled kernel as a debugging aid for the vector type printf issues Gbp-Pq: Name 0143-add-printf-and-parameter-passing-test-for-ulongn-vec.patch --- diff --git a/tests/kernel/CMakeLists.txt b/tests/kernel/CMakeLists.txt index e6d5b89..8b7b203 100644 --- a/tests/kernel/CMakeLists.txt +++ b/tests/kernel/CMakeLists.txt @@ -230,12 +230,17 @@ add_test_pocl(NAME "kernel/test_printf_vectors" EXPECTED_OUTPUT "test_printf_vectors_expout.txt" COMMAND "kernel" "test_printf_vectors") +add_test_pocl(NAME "kernel/test_printf_vectors_ulongn" + EXPECTED_OUTPUT "test_printf_vectors_ulongn_expout.txt" + COMMAND "kernel" "test_printf_vectors_ulongn") + # on most platforms, the printf tests for vector types expose bugs in the # pocl printf implementation (passing of variadic arguments containing OpenCL # vector types) and maybe also related bugs in llvm (issue #682, #1007) if(NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "s390x")) set_tests_properties("kernel/test_printf_vectors" + "kernel/test_printf_vectors_ulongn" PROPERTIES WILL_FAIL 1) endif() @@ -256,6 +261,7 @@ set_tests_properties("kernel/test_shuffle_char" "kernel/test_shuffle_float" ${EXTRA_TESTS} "kernel/test_printf" "kernel/test_printf_vectors" + "kernel/test_printf_vectors_ulongn" "kernel/test_sizeof_uint" PROPERTIES diff --git a/tests/kernel/test_printf_vectors_ulongn.cl b/tests/kernel/test_printf_vectors_ulongn.cl new file mode 100644 index 0000000..d67c73a --- /dev/null +++ b/tests/kernel/test_printf_vectors_ulongn.cl @@ -0,0 +1,153 @@ +ulong f2(ulong2 ul2, ulong z) __attribute__((noinline)); +ulong f2(ulong2 ul2, ulong z) +{ +ulong s = ul2.x + ul2.y; +return s ^ z; +} + +ulong g2() __attribute__((noinline)); +ulong g2() +{ +ulong2 ul2 = (ulong2)(0x18, 0x29); +return -f2(ul2, 0x123456789abcdef1UL); +} + +ulong f3(ulong3 ul3, ulong z) __attribute__((noinline)); +ulong f3(ulong3 ul3, ulong z) +{ +ulong s = ul3.x + ul3.y + ul3.z; +return s ^ z; +} + +ulong g3() __attribute__((noinline)); +ulong g3() +{ +ulong3 ul3 = (ulong3)(0x18, 0x29, 0x3a); +return -f3(ul3, 0x123456789abcdef1UL); +} + +ulong f4(ulong4 ul4, ulong z) __attribute__((noinline)); +ulong f4(ulong4 ul4, ulong z) +{ +ulong s = ul4.x + ul4.y + ul4.z + ul4.w; +return s ^ z; +} + +ulong g4() __attribute__((noinline)); +ulong g4() +{ +ulong4 ul4 = (ulong4)(0x18, 0x29, 0x3a, 0x4b); +return -f4(ul4, 0x123456789abcdef1UL); +} + +ulong f8(ulong8 ul8, ulong z) __attribute__((noinline)); +ulong f8(ulong8 ul8, ulong z) +{ +ulong s = ul8.s0 + ul8.s1 + ul8.s2 + ul8.s3 + ul8.s4 + ul8.s5 + ul8.s6 + ul8.s7; +return s ^ z; +} + +ulong g8() __attribute__((noinline)); +ulong g8() +{ +ulong8 ul8 = (ulong8)(0x18, 0x29, 0x3a, 0x4b, 0x5c, 0x6d, 0x7e, 0x8f); +return -f8(ul8, 0x123456789abcdef1UL); +} + +ulong f16(ulong16 ul16, ulong z) __attribute__((noinline)); +ulong f16(ulong16 ul16, ulong z) +{ +ulong s = ul16.s0 + ul16.s1 + ul16.s2 + ul16.s3 + ul16.s4 + ul16.s5 + ul16.s6 + ul16.s7 + ul16.s8 + ul16.s9 + ul16.sa + ul16.sb + ul16.sc + ul16.sd + ul16.se + ul16.sf; +return s ^ z; +} + +ulong g16() __attribute__((noinline)); +ulong g16() +{ +ulong16 ul16 = (ulong16)(0x18, 0x29, 0x3a, 0x4b, 0x5c, 0x6d, 0x7e, 0x8f, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6, 0x17, 0x28); +return -f16(ul16, 0x123456789abcdef1UL); +} + +int pl2() __attribute__((noinline)); +int pl2() +{ + printf("ulong2 %#v2lx\n", (ulong2)(0xa1a2a3a4a5a6a7a8UL, 0xa9aaabacadaeafb1UL)); + return 0; +} + +int pl3() __attribute__((noinline)); +int pl3() +{ + printf("ulong3 %#v3lx\n", (ulong3)(0xc1c2c3c4c5c6c7c8UL, 0xc9cacbcccdcecfd1UL, 0xd2d3d4d5d6d7d8d9UL)); + return 0; +} + +int pl4() __attribute__((noinline)); +int pl4() +{ + printf("ulong4 %#v4lx\n", (ulong4)(0xe1e2e3e4e5e6e7e8UL, 0xe9eaebecedeeeff1UL, 0xf2f3f4f5f6f7f8f9UL, 0xfafbfcfdfeff1112UL)); + return 0; +} + +int pl8() __attribute__((noinline)); +int pl8() +{ + printf("ulong8 %#v8lx\n", (ulong8)(0x2122232425262728UL, 0x292a2b2c2d2e2f31UL, 0x3233343536373839UL, 0x3a3b3c3d3e3f4142UL, 0x434445464748494aUL, 0x4b4c4d4e4f515253UL, 0x5455565758595a5bUL, 0x5c5d5e5f61626364UL)); + return 0; +} + +int pl16() __attribute__((noinline)); +int pl16() +{ + printf("ulong16 %#v16lx\n", (ulong16)(0x7172737475767778UL, 0x797a7b7c7d7e7f81UL, 0x8283848586878889UL, 0x8a8b8c8d8e8f9192UL, 0x939495969798999aUL, 0x9b9c9d9e9fa1a2a3UL, 0xa4a5a6a7a8a9aaabUL, 0xacadaeafb1b2b3b4UL, + 0xb5b6b7b8b9babbbcUL, 0xbdbebfc1c2c3c4c5UL, 0xc6c7c8c9cacbcccdUL, 0xcecfd1d2d3d4d5d6UL, 0xd7d8d9dadbdcdddeUL, 0xdfe1e2e3e4e5e6e7UL, 0xe8e9eaebecedeeefUL, 0xf1f2f3f4f5f6f7f8UL)); + return 0; +} + +kernel void test_printf_vectors_ulongn() +{ + printf("ulong2 %#v2lx\n", (ulong2)(0xa1a2a3a4a5a6a7a8UL, 0xa9aaabacadaeafb1UL)); + printf("ulong3 %#v3lx\n", (ulong3)(0xc1c2c3c4c5c6c7c8UL, 0xc9cacbcccdcecfd1UL, 0xd2d3d4d5d6d7d8d9UL)); + printf("ulong4 %#v4lx\n", (ulong4)(0xe1e2e3e4e5e6e7e8UL, 0xe9eaebecedeeeff1UL, 0xf2f3f4f5f6f7f8f9UL, 0xfafbfcfdfeff1112UL)); + printf("ulong8 %#v8lx\n", (ulong8)(0x2122232425262728UL, 0x292a2b2c2d2e2f31UL, 0x3233343536373839UL, 0x3a3b3c3d3e3f4142UL, 0x434445464748494aUL, 0x4b4c4d4e4f515253UL, 0x5455565758595a5bUL, 0x5c5d5e5f61626364UL)); + printf("ulong16 %#v16lx\n", (ulong16)(0x7172737475767778UL, 0x797a7b7c7d7e7f81UL, 0x8283848586878889UL, 0x8a8b8c8d8e8f9192UL, 0x939495969798999aUL, 0x9b9c9d9e9fa1a2a3UL, 0xa4a5a6a7a8a9aaabUL, 0xacadaeafb1b2b3b4UL, + 0xb5b6b7b8b9babbbcUL, 0xbdbebfc1c2c3c4c5UL, 0xc6c7c8c9cacbcccdUL, 0xcecfd1d2d3d4d5d6UL, 0xd7d8d9dadbdcdddeUL, 0xdfe1e2e3e4e5e6e7UL, 0xe8e9eaebecedeeefUL, 0xf1f2f3f4f5f6f7f8UL)); + + pl2(); + pl3(); + pl4(); + pl8(); + pl16(); + + printf("\n"); + printf("%c %#v2lx %#v2lx %c\n", 'l', + (ulong2)(0xa1a2a3a4a5a6a7a8UL, 0xa9aaabacadaeafb1UL), + (ulong2)(0xb2b3b4b5b6b7b8b9UL, 0xbabbbcbdbebfc1c2UL), '.'); + printf("%c %#v3lx %#v3lx %c\n", 'l', + (ulong3)(0xd1d2d3d4d5d6d7d8UL, 0xd9dadbdcdddedfe1UL, 0xe2e3e4e5e6e7e8e9UL), + (ulong3)(0xeaebecedeeeff1f2UL, 0xf3f4f5f6f7f8f9faUL, 0xfbfcfdfeff111213UL), '.'); + printf("%c %#v4lx %#v4lx %c\n", 'l', + (ulong4)(0x2122232425262728UL, 0x292a2b2c2d2e2f31UL, 0x3233343536373839UL, 0x3a3b3c3d3e3f4142UL), + (ulong4)(0x434445464748494aUL, 0x4b4c4d4e4f515253UL, 0x5455565758595a5bUL, 0x5c5d5e5f61626364UL), '.'); + printf("%c %#v8lx %#v8lx %c\n", 'l', + (ulong8)(0x7172737475767778UL, 0x797a7b7c7d7e7f81UL, 0x8283848586878889UL, 0x8a8b8c8d8e8f9192UL, 0x939495969798999aUL, 0x9b9c9d9e9fa1a2a3UL, 0xa4a5a6a7a8a9aaabUL, 0xacadaeafb1b2b3b4UL), + (ulong8)(0xb5b6b7b8b9babbbcUL, 0xbdbebfc1c2c3c4c5UL, 0xc6c7c8c9cacbcccdUL, 0xcecfd1d2d3d4d5d6UL, 0xd7d8d9dadbdcdddeUL, 0xdfe1e2e3e4e5e6e7UL, 0xe8e9eaebecedeeefUL, 0xf1f2f3f4f5f6f7f8UL), '.'); + printf("%c %#v16lx %#v16lx %c\n", 'l', + (ulong16)(0x1112131415161718UL, 0x191a1b1c1d1e1f21UL, 0x2223242526272829UL, 0x2a2b2c2d2e2f3132UL, 0x333435363738393aUL, 0x3b3c3d3e3f414243UL, 0x4445464748494a4bUL, 0x4c4d4e4f51525354UL, + 0x55565758595a5b5cUL, 0x5d5e5f6162636465UL, 0x666768696a6b6c6dUL, 0x6e6f717273747576UL, 0x7778797a7b7c7d7eUL, 0x7f81828384858687UL, 0x88898a8b8c8d8e8fUL, 0x9192939495969798UL), + (ulong16)(0x999a9b9c9d9e9fa1UL, 0xa2a3a4a5a6a7a8a9UL, 0xaaabacadaeafb1b2UL, 0xb3b4b5b6b7b8b9baUL, 0xbbbcbdbebfc1c2c3UL, 0xc4c5c6c7c8c9cacbUL, 0xcccdcecfd1d2d3d4UL, 0xd5d6d7d8d9dadbdcUL, + 0xdddedfe1e2e3e4e5UL, 0xe6e7e8e9eaebecedUL, 0xeeeff1f2f3f4f5f6UL, 0xf7f8f9fafbfcfdfeUL, 0xff11121314151617UL, 0x18191a1b1c1d1e1fUL, 0x2122232425262728UL, 0x292a2b2c2d2e2f31UL), '.'); + + printf("\n"); + printf("ulong2 %16lx\n", f2((ulong2)(0), 0)); + printf("ulong3 %16lx\n", f3((ulong3)(0), 0)); + printf("ulong4 %16lx\n", f4((ulong4)(0), 0)); + printf("ulong8 %16lx\n", f8((ulong8)(0), 0)); + printf("ulong16 %16lx\n", f16((ulong16)(0), 0)); + + printf("ulong2 %16lx\n", g2()); + printf("ulong3 %16lx\n", g3()); + printf("ulong4 %16lx\n", g4()); + printf("ulong8 %16lx\n", g8()); + printf("ulong16 %16lx\n", g16()); +} diff --git a/tests/kernel/test_printf_vectors_ulongn_expout.txt b/tests/kernel/test_printf_vectors_ulongn_expout.txt new file mode 100644 index 0000000..166fbec --- /dev/null +++ b/tests/kernel/test_printf_vectors_ulongn_expout.txt @@ -0,0 +1,29 @@ +Running test test_printf_vectors_ulongn... +ulong2 0xa1a2a3a4a5a6a7a8,0xa9aaabacadaeafb1 +ulong3 0xc1c2c3c4c5c6c7c8,0xc9cacbcccdcecfd1,0xd2d3d4d5d6d7d8d9 +ulong4 0xe1e2e3e4e5e6e7e8,0xe9eaebecedeeeff1,0xf2f3f4f5f6f7f8f9,0xfafbfcfdfeff1112 +ulong8 0x2122232425262728,0x292a2b2c2d2e2f31,0x3233343536373839,0x3a3b3c3d3e3f4142,0x434445464748494a,0x4b4c4d4e4f515253,0x5455565758595a5b,0x5c5d5e5f61626364 +ulong16 0x7172737475767778,0x797a7b7c7d7e7f81,0x8283848586878889,0x8a8b8c8d8e8f9192,0x939495969798999a,0x9b9c9d9e9fa1a2a3,0xa4a5a6a7a8a9aaab,0xacadaeafb1b2b3b4,0xb5b6b7b8b9babbbc,0xbdbebfc1c2c3c4c5,0xc6c7c8c9cacbcccd,0xcecfd1d2d3d4d5d6,0xd7d8d9dadbdcddde,0xdfe1e2e3e4e5e6e7,0xe8e9eaebecedeeef,0xf1f2f3f4f5f6f7f8 +ulong2 0xa1a2a3a4a5a6a7a8,0xa9aaabacadaeafb1 +ulong3 0xc1c2c3c4c5c6c7c8,0xc9cacbcccdcecfd1,0xd2d3d4d5d6d7d8d9 +ulong4 0xe1e2e3e4e5e6e7e8,0xe9eaebecedeeeff1,0xf2f3f4f5f6f7f8f9,0xfafbfcfdfeff1112 +ulong8 0x2122232425262728,0x292a2b2c2d2e2f31,0x3233343536373839,0x3a3b3c3d3e3f4142,0x434445464748494a,0x4b4c4d4e4f515253,0x5455565758595a5b,0x5c5d5e5f61626364 +ulong16 0x7172737475767778,0x797a7b7c7d7e7f81,0x8283848586878889,0x8a8b8c8d8e8f9192,0x939495969798999a,0x9b9c9d9e9fa1a2a3,0xa4a5a6a7a8a9aaab,0xacadaeafb1b2b3b4,0xb5b6b7b8b9babbbc,0xbdbebfc1c2c3c4c5,0xc6c7c8c9cacbcccd,0xcecfd1d2d3d4d5d6,0xd7d8d9dadbdcddde,0xdfe1e2e3e4e5e6e7,0xe8e9eaebecedeeef,0xf1f2f3f4f5f6f7f8 + +l 0xa1a2a3a4a5a6a7a8,0xa9aaabacadaeafb1 0xb2b3b4b5b6b7b8b9,0xbabbbcbdbebfc1c2 . +l 0xd1d2d3d4d5d6d7d8,0xd9dadbdcdddedfe1,0xe2e3e4e5e6e7e8e9 0xeaebecedeeeff1f2,0xf3f4f5f6f7f8f9fa,0xfbfcfdfeff111213 . +l 0x2122232425262728,0x292a2b2c2d2e2f31,0x3233343536373839,0x3a3b3c3d3e3f4142 0x434445464748494a,0x4b4c4d4e4f515253,0x5455565758595a5b,0x5c5d5e5f61626364 . +l 0x7172737475767778,0x797a7b7c7d7e7f81,0x8283848586878889,0x8a8b8c8d8e8f9192,0x939495969798999a,0x9b9c9d9e9fa1a2a3,0xa4a5a6a7a8a9aaab,0xacadaeafb1b2b3b4 0xb5b6b7b8b9babbbc,0xbdbebfc1c2c3c4c5,0xc6c7c8c9cacbcccd,0xcecfd1d2d3d4d5d6,0xd7d8d9dadbdcddde,0xdfe1e2e3e4e5e6e7,0xe8e9eaebecedeeef,0xf1f2f3f4f5f6f7f8 . +l 0x1112131415161718,0x191a1b1c1d1e1f21,0x2223242526272829,0x2a2b2c2d2e2f3132,0x333435363738393a,0x3b3c3d3e3f414243,0x4445464748494a4b,0x4c4d4e4f51525354,0x55565758595a5b5c,0x5d5e5f6162636465,0x666768696a6b6c6d,0x6e6f717273747576,0x7778797a7b7c7d7e,0x7f81828384858687,0x88898a8b8c8d8e8f,0x9192939495969798 0x999a9b9c9d9e9fa1,0xa2a3a4a5a6a7a8a9,0xaaabacadaeafb1b2,0xb3b4b5b6b7b8b9ba,0xbbbcbdbebfc1c2c3,0xc4c5c6c7c8c9cacb,0xcccdcecfd1d2d3d4,0xd5d6d7d8d9dadbdc,0xdddedfe1e2e3e4e5,0xe6e7e8e9eaebeced,0xeeeff1f2f3f4f5f6,0xf7f8f9fafbfcfdfe,0xff11121314151617,0x18191a1b1c1d1e1f,0x2122232425262728,0x292a2b2c2d2e2f31 . + +ulong2 0 +ulong3 0 +ulong4 0 +ulong8 0 +ulong16 0 +ulong2 edcba98765432150 +ulong3 edcba98765432176 +ulong4 edcba987654321c9 +ulong8 edcba98765432393 +ulong16 edcba987654326af +OK