1
1
// RUN: %libomptarget-compilexx-run-and-check-generic
2
2
3
- // Wrong results on amdgpu
4
- // XFAIL: amdgcn-amd-amdhsa
5
-
6
3
#include < stdio.h>
7
4
8
5
struct View {
@@ -26,42 +23,55 @@ int main() {
26
23
int Data = 123456 ;
27
24
V1.Data = &Data;
28
25
Foo<ViewPtr> Baz (V1);
26
+ int D1, D2;
29
27
30
28
// CHECK: Host 123456.
31
29
printf (" Host %d.\n " , Bar.VRef .Data );
32
- #pragma omp target map(Bar.VRef)
30
+ #pragma omp target map(Bar.VRef) map(from : D1, D2)
33
31
{
34
32
// CHECK: Device 123456.
35
- printf (" Device %d.\n " , Bar.VRef .Data );
33
+ D1 = Bar.VRef .Data ;
34
+ printf (" Device %d.\n " , D1);
36
35
V.Data = 654321 ;
37
36
// CHECK: Device 654321.
38
- printf (" Device %d.\n " , Bar.VRef .Data );
37
+ D2 = Bar.VRef .Data ;
38
+ printf (" Device %d.\n " , D2);
39
39
}
40
+ printf (" Device %d.\n " , D1);
41
+ printf (" Device %d.\n " , D2);
40
42
// CHECK: Host 654321 654321.
41
43
printf (" Host %d %d.\n " , Bar.VRef .Data , V.Data );
42
44
V.Data = 123456 ;
43
45
// CHECK: Host 123456.
44
46
printf (" Host %d.\n " , Bar.VRef .Data );
45
- #pragma omp target map(Bar) map(Bar.VRef)
47
+ #pragma omp target map(Bar) map(Bar.VRef) map(from : D1, D2)
46
48
{
47
49
// CHECK: Device 123456.
48
- printf (" Device %d.\n " , Bar.VRef .Data );
50
+ D1 = Bar.VRef .Data ;
51
+ printf (" Device %d.\n " , D1);
49
52
V.Data = 654321 ;
50
53
// CHECK: Device 654321.
51
- printf (" Device %d.\n " , Bar.VRef .Data );
54
+ D2 = Bar.VRef .Data ;
55
+ printf (" Device %d.\n " , D2);
52
56
}
57
+ printf (" Device %d.\n " , D1);
58
+ printf (" Device %d.\n " , D2);
53
59
// CHECK: Host 654321 654321.
54
60
printf (" Host %d %d.\n " , Bar.VRef .Data , V.Data );
55
61
// CHECK: Host 123456.
56
62
printf (" Host %d.\n " , *Baz.VRef .Data );
57
- #pragma omp target map(*Baz.VRef.Data)
63
+ #pragma omp target map(*Baz.VRef.Data) map(from : D1, D2)
58
64
{
59
65
// CHECK: Device 123456.
60
- printf (" Device %d.\n " , *Baz.VRef .Data );
66
+ D1 = *Baz.VRef .Data ;
67
+ printf (" Device %d.\n " , D1);
61
68
*V1.Data = 654321 ;
62
69
// CHECK: Device 654321.
63
- printf (" Device %d.\n " , *Baz.VRef .Data );
70
+ D2 = *Baz.VRef .Data ;
71
+ printf (" Device %d.\n " , D2);
64
72
}
73
+ printf (" Device %d.\n " , D1);
74
+ printf (" Device %d.\n " , D2);
65
75
// CHECK: Host 654321 654321 654321.
66
76
printf (" Host %d %d %d.\n " , *Baz.VRef .Data , *V1.Data , Data);
67
77
return 0 ;
0 commit comments