1313#include < sycl/detail/core.hpp>
1414#include < sycl/usm.hpp>
1515
16- __attribute__ ((noinline)) long long foo (int data1, long long data2) {
16+ __attribute__ ((noinline)) int check (int data1, int data2) {
1717 return data1 + data2;
1818}
1919
2020void check_memset (sycl::queue &Q) {
2121 std::cout << " check_memset" << std::endl;
2222 auto *array = sycl::malloc_device<int >(2 , Q);
2323 auto ev1 = Q.memset (array, 0 , 2 * sizeof (int ));
24- auto ev2 = Q.single_task (ev1, [=]() { array[0 ] = foo (array[0 ], array[1 ]); });
24+ auto ev2 =
25+ Q.single_task (ev1, [=]() { array[0 ] = check (array[0 ], array[1 ]); });
2526 Q.wait ();
2627 sycl::free (array, Q);
2728 std::cout << " PASS" << std::endl;
@@ -30,25 +31,41 @@ void check_memset(sycl::queue &Q) {
3031// CHECK-NOT: use-of-uninitialized-value
3132// CHECK: PASS
3233
34+ void check_fill (sycl::queue &Q) {
35+ std::cout << " check_fill" << std::endl;
36+ int *array = sycl::malloc_device<int >(2 , Q);
37+ uint32_t pattern = 0 ;
38+ auto ev1 = Q.fill (array, pattern, 2 );
39+ auto ev2 =
40+ Q.single_task (ev1, [=]() { array[0 ] = check (array[0 ], array[1 ]); });
41+ Q.wait ();
42+ sycl::free (array, Q);
43+ std::cout << " PASS" << std::endl;
44+ }
45+ // CHECK-LABEL: check_fill
46+ // CHECK-NOT: use-of-uninitialized-value
47+ // CHECK: PASS
48+
3349void check_memcpy (sycl::queue &Q) {
34- std::cout << " check_memcpy2 " << std::endl;
50+ std::cout << " check_memcpy " << std::endl;
3551 auto *source = sycl::malloc_device<int >(2 , Q);
3652 auto *array = sycl::malloc_device<int >(2 , Q);
37- // FIXME: We don't support shadow propagation on host/shared usm
3853 auto ev1 = Q.memcpy (array, source, 2 * sizeof (int ));
39- auto ev2 = Q.single_task (ev1, [=]() { array[0 ] = foo (array[0 ], array[1 ]); });
54+ auto ev2 =
55+ Q.single_task (ev1, [=]() { array[0 ] = check (array[0 ], array[1 ]); });
4056 Q.wait ();
4157 sycl::free (array, Q);
4258 sycl::free (source, Q);
4359 std::cout << " PASS" << std::endl;
4460}
45- // CHECK-LABEL: check_memcpy2
61+ // CHECK-LABEL: check_memcpy
4662// CHECK: use-of-uninitialized-value
4763// CHECK-NOT: PASS
4864
4965int main () {
5066 sycl::queue Q;
5167 check_memset (Q);
68+ check_fill (Q);
5269 check_memcpy (Q);
5370 return 0 ;
5471}
0 commit comments