1
1
// RUN: %clang_cc1 -I %S/Inputs -fsycl -fsycl-is-device -ast-dump %s | FileCheck %s
2
- // XFAIL: *
3
2
4
3
// This test checks that compiler generates correct kernel arguments for
5
4
// arrays, Accessor arrays, and structs containing Accessors.
@@ -19,7 +18,7 @@ int main() {
19
18
accessor<int , 1 , access::mode::read_write, access::target::global_buffer>;
20
19
21
20
Accessor acc[2 ];
22
- int a[100 ];
21
+ int a[2 ];
23
22
struct struct_acc_t {
24
23
Accessor member_acc[4 ];
25
24
} struct_acc;
@@ -31,7 +30,7 @@ int main() {
31
30
32
31
a_kernel<class kernel_B >(
33
32
[=]() {
34
- int local = a[3 ];
33
+ int local = a[1 ];
35
34
});
36
35
37
36
a_kernel<class kernel_C >(
@@ -41,8 +40,7 @@ int main() {
41
40
}
42
41
43
42
// Check kernel_A parameters
44
- // CHECK: FunctionDecl {{.*}}kernel_A{{.*}} 'void (wrapped_array, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>)'
45
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_ 'wrapped_array'
43
+ // CHECK: FunctionDecl {{.*}}kernel_A{{.*}} 'void (__global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>)'
46
44
// CHECK-NEXT: ParmVarDecl {{.*}} used _arg_ '__global int *'
47
45
// CHECK-NEXT: ParmVarDecl {{.*}} used _arg_ 'cl::sycl::range<1>'
48
46
// CHECK-NEXT: ParmVarDecl {{.*}} used _arg_ 'cl::sycl::range<1>'
@@ -56,41 +54,38 @@ int main() {
56
54
// CHECK: CXXMemberCallExpr {{.*}} 'void'
57
55
// CHECK-NEXT: MemberExpr {{.*}}__init
58
56
59
- // CHECK kernel_B parameters
60
- // CHECK: FunctionDecl {{.*}}kernel_B{{.*}} 'void (wrapped_array)'
61
- // CHECK-NEXT: ParmVarDecl {{.*}} 'wrapped_array'
62
- // CHECK-NEXT: CompoundStmt
63
- // CHECK-NEXT: DeclStmt
64
- // CHECK-NEXT: VarDecl
65
- // CHECK-NEXT: InitListExpr
66
- // CHECK-NEXT: ArrayInitLoopExpr {{.*}} 'int [100]'
57
+ // Check kernel_B parameters
58
+ // CHECK: FunctionDecl {{.*}}kernel_B{{.*}} 'void (int, int)'
59
+ // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_ 'int'
60
+ // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_ 'int'
67
61
68
- // CHECK kernel_C parameters
69
- // CHECK: FunctionDecl {{.*}}kernel_C{{.*}} 'void (struct {{.*}}, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>)'
70
- // CHECK-NEXT: ParmVarDecl {{.*}} 'struct {{.*}}'
71
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
72
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
73
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
74
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
75
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
76
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
77
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
78
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
79
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
80
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
81
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
82
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
83
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
84
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
85
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
86
- // CHECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
62
+ // Correct and enable after struct mebers are extracted into separate parameters
63
+ // C HECK kernel_C parameters
64
+ // C HECK: FunctionDecl {{.*}}kernel_C{{.*}} 'void (struct {{.*}}, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>, __global int *, cl::sycl::range<1>, cl::sycl::range<1>, cl::sycl::id<1>)'
65
+ // C HECK-NEXT: ParmVarDecl {{.*}} 'struct {{.*}}'
66
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
67
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
68
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
69
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
70
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
71
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
72
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
73
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
74
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
75
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
76
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
77
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
78
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc '__global int *'
79
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
80
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::range<1>'
81
+ // C HECK-NEXT: ParmVarDecl {{.*}} used _arg_member_acc 'cl::sycl::id<1>'
87
82
88
- // CHECK that four accessor init functions are called
89
- // CHECK : CXXMemberCallExpr {{.*}} 'void'
90
- // CHECK -NEXT: MemberExpr {{.*}}__init
91
- // CHECK : CXXMemberCallExpr {{.*}} 'void'
92
- // CHECK -NEXT: MemberExpr {{.*}}__init
93
- // CHECK : CXXMemberCallExpr {{.*}} 'void'
94
- // CHECK -NEXT: MemberExpr {{.*}}__init
95
- // CHECK : CXXMemberCallExpr {{.*}} 'void'
96
- // CHECK -NEXT: MemberExpr {{.*}}__init
83
+ // C HECK that four accessor init functions are called
84
+ // C HECK : CXXMemberCallExpr {{.*}} 'void'
85
+ // C HECK -NEXT: MemberExpr {{.*}}__init
86
+ // C HECK : CXXMemberCallExpr {{.*}} 'void'
87
+ // C HECK -NEXT: MemberExpr {{.*}}__init
88
+ // C HECK : CXXMemberCallExpr {{.*}} 'void'
89
+ // C HECK -NEXT: MemberExpr {{.*}}__init
90
+ // C HECK : CXXMemberCallExpr {{.*}} 'void'
91
+ // C HECK -NEXT: MemberExpr {{.*}}__init
0 commit comments