@@ -1,8 +1,5 @@
// RUN: %libomptarget-compilexx-run-and-check-generic
// Wrong results on amdgpu
// XFAIL: amdgcn-amd-amdhsa
#include < stdio.h>
struct View {
Expand All
@@ -26,42 +23,55 @@ int main() {
int Data = 123456 ;
V1.Data = &Data;
Foo<ViewPtr> Baz (V1);
int D1, D2;
// CHECK: Host 123456.
printf (" Host %d.\n " , Bar.VRef .Data );
#pragma omp target map(Bar.VRef)
#pragma omp target map(Bar.VRef) map(from : D1, D2)
{
// CHECK: Device 123456.
printf (" Device %d.\n " , Bar.VRef .Data );
D1 = Bar.VRef .Data ;
printf (" Device %d.\n " , D1);
V.Data = 654321 ;
// CHECK: Device 654321.
printf (" Device %d.\n " , Bar.VRef .Data );
D2 = Bar.VRef .Data ;
printf (" Device %d.\n " , D2);
}
printf (" Device %d.\n " , D1);
printf (" Device %d.\n " , D2);
// CHECK: Host 654321 654321.
printf (" Host %d %d.\n " , Bar.VRef .Data , V.Data );
V.Data = 123456 ;
// CHECK: Host 123456.
printf (" Host %d.\n " , Bar.VRef .Data );
#pragma omp target map(Bar) map(Bar.VRef)
#pragma omp target map(Bar) map(Bar.VRef) map(from : D1, D2)
{
// CHECK: Device 123456.
printf (" Device %d.\n " , Bar.VRef .Data );
D1 = Bar.VRef .Data ;
printf (" Device %d.\n " , D1);
V.Data = 654321 ;
// CHECK: Device 654321.
printf (" Device %d.\n " , Bar.VRef .Data );
D2 = Bar.VRef .Data ;
printf (" Device %d.\n " , D2);
}
printf (" Device %d.\n " , D1);
printf (" Device %d.\n " , D2);
// CHECK: Host 654321 654321.
printf (" Host %d %d.\n " , Bar.VRef .Data , V.Data );
// CHECK: Host 123456.
printf (" Host %d.\n " , *Baz.VRef .Data );
#pragma omp target map(*Baz.VRef.Data)
#pragma omp target map(*Baz.VRef.Data) map(from : D1, D2)
{
// CHECK: Device 123456.
printf (" Device %d.\n " , *Baz.VRef .Data );
D1 = *Baz.VRef .Data ;
printf (" Device %d.\n " , D1);
*V1.Data = 654321 ;
// CHECK: Device 654321.
printf (" Device %d.\n " , *Baz.VRef .Data );
D2 = *Baz.VRef .Data ;
printf (" Device %d.\n " , D2);
}
printf (" Device %d.\n " , D1);
printf (" Device %d.\n " , D2);
// CHECK: Host 654321 654321 654321.
printf (" Host %d %d %d.\n " , *Baz.VRef .Data , *V1.Data , Data);
return 0 ;
Expand Down