Skip to content
Closed
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions clang/include/clang/Sema/Sema.h
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,8 @@ class SYCLIntegrationHeader {

/// Adds a kernel parameter descriptor to current kernel invocation
/// descriptor.
void addParamDesc(kernel_param_kind_t Kind, int Info, unsigned Offset);
void addParamDesc(kernel_param_kind_t Kind, int Info, unsigned Offset,
unsigned NumOpenCLParams);

/// Signals that addition of parameter descriptors to current kernel
/// invocation descriptor has finished.
Expand All @@ -358,8 +359,9 @@ class SYCLIntegrationHeader {
int Info = 0;
// Offset of the captured parameter value in the lambda or function object.
unsigned Offset = 0;

KernelParamDesc() = default;
// NumOpenCLParams to capture number of parameters in Accessor/Sampler init
// method.
unsigned NumOpenCLParams = 1;
};

// Kernel invocation descriptor
Expand Down
65 changes: 49 additions & 16 deletions clang/lib/Sema/SemaSYCL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1765,14 +1765,17 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {

void addParam(const FieldDecl *FD, QualType ArgTy,
SYCLIntegrationHeader::kernel_param_kind_t Kind) {
assert(Kind != SYCLIntegrationHeader::kind_accessor &&
"Kernel parameter should not be an Accessor");
uint64_t Size;
const ConstantArrayType *CAT =
SemaRef.getASTContext().getAsConstantArrayType(ArgTy);
if (CAT)
ArgTy = CAT->getElementType();
Size = SemaRef.getASTContext().getTypeSizeInChars(ArgTy).getQuantity();
Header.addParamDesc(Kind, static_cast<unsigned>(Size),
static_cast<unsigned>(CurOffset));
static_cast<unsigned>(CurOffset),
/*NumOpenCLParams=*/1);
}

public:
Expand All @@ -1783,6 +1786,13 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {
Header.startKernel(Name, NameType, StableName, KernelObj->getLocation());
}

unsigned getNumOpenCLParams(const CXXRecordDecl *AccessorTy) {
assert(AccessorTy && "Accessor type must be a C++ record type");
CXXMethodDecl *InitMethod = getMethodByName(AccessorTy, InitMethodName);
assert(InitMethod && "accessor must have __init method");
return InitMethod->param_size();
}

bool handleSyclAccessorType(const CXXBaseSpecifier &BC,
QualType FieldTy) final {
const auto *AccTy =
Expand All @@ -1792,7 +1802,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {
int Dims = static_cast<int>(
AccTy->getTemplateArgs()[1].getAsIntegral().getExtValue());
int Info = getAccessTarget(AccTy) | (Dims << 11);
Header.addParamDesc(SYCLIntegrationHeader::kind_accessor, Info, CurOffset);
Header.addParamDesc(SYCLIntegrationHeader::kind_accessor, Info, CurOffset,
getNumOpenCLParams(AccTy));
return true;
}

Expand All @@ -1804,7 +1815,8 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {
int Dims = static_cast<int>(
AccTy->getTemplateArgs()[1].getAsIntegral().getExtValue());
int Info = getAccessTarget(AccTy) | (Dims << 11);
Header.addParamDesc(SYCLIntegrationHeader::kind_accessor, Info, CurOffset);
Header.addParamDesc(SYCLIntegrationHeader::kind_accessor, Info, CurOffset,
getNumOpenCLParams(AccTy));
return true;
}

Expand All @@ -1813,11 +1825,11 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {
assert(SamplerTy && "Sampler type must be a C++ record type");
CXXMethodDecl *InitMethod = getMethodByName(SamplerTy, InitMethodName);
assert(InitMethod && "sampler must have __init method");

// sampler __init method has only one argument
assert((InitMethod->param_size() == 1) &&
"sampler __init method should have only one argument");
const ParmVarDecl *SamplerArg = InitMethod->getParamDecl(0);
assert(SamplerArg && "sampler __init method must have sampler parameter");

addParam(FD, SamplerArg->getType(), SYCLIntegrationHeader::kind_sampler);
return true;
}
Expand Down Expand Up @@ -2682,19 +2694,43 @@ void SYCLIntegrationHeader::emit(raw_ostream &O) {
}
O << "};\n\n";

O << "// array representing kernel parameters used in all kernels defined in "
"the\n";
O << "// corresponding source\n";
O << "static constexpr\n";
O << "const bool param_omit_table[] = {\n";
O << " // OMIT_TABLE_BEGIN\n";
for (const KernelDesc &K : KernelDescs) {
O << " //--- " << K.Name << "\n";
O << " ";
for (const KernelParamDesc &P : K.Params)
for (unsigned J = 0; J < P.NumOpenCLParams; J++)
O << "false, ";
O << "\n";
}
O << " // OMIT_TABLE_END\n";
O << " }; \n\n";

O << "// array representing signatures of all kernels defined in the\n";
O << "// corresponding source\n";
O << "static constexpr\n";
O << "const kernel_param_desc_t kernel_signatures[] = {\n";

for (unsigned I = 0; I < KernelDescs.size(); I++) {
auto &K = KernelDescs[I];
unsigned CurIndex = 0;
for (const KernelDesc &K : KernelDescs) {
O << " //--- " << K.Name << "\n";

for (const auto &P : K.Params) {
for (const KernelParamDesc &P : K.Params) {
std::string TyStr = paramKind2Str(P.Kind);
O << " { kernel_param_kind_t::" << TyStr << ", ";
O << P.Info << ", " << P.Offset << " },\n";
O << P.Info << ", " << P.Offset << ", ";
O << "param_omit_table[" << CurIndex << "]";
++CurIndex;
for (unsigned X = 1; X < P.NumOpenCLParams; X++) {
O << " | (param_omit_table[" << CurIndex << "] << " << X << ")";
++CurIndex;
}
O << "}";
O << ",\n";
}
O << "\n";
}
Expand Down Expand Up @@ -2789,14 +2825,11 @@ void SYCLIntegrationHeader::startKernel(StringRef KernelName,
}

void SYCLIntegrationHeader::addParamDesc(kernel_param_kind_t Kind, int Info,
unsigned Offset) {
unsigned Offset,
unsigned NumOpenCLParams) {
auto *K = getCurKernelDesc();
assert(K && "no kernels");
K->Params.push_back(KernelParamDesc());
KernelParamDesc &PD = K->Params.back();
PD.Kind = Kind;
PD.Info = Info;
PD.Offset = Offset;
K->Params.push_back({Kind, Info, Offset, NumOpenCLParams});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.emplace_back()?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@keryell : emplace_back doesn't support aggregate initialization until C++20, and our codebase is C++14.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@keryell : emplace_back doesn't support aggregate initialization until C++20, and our codebase is C++14.

Then you know what you have to do. Please replace all the -std=c++14 with -std=c++20 ;-)
This is depressing all this time wasted writing old code... :-(

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@keryell : emplace_back doesn't support aggregate initialization until C++20, and our codebase is C++14.

Then you know what you have to do. Please replace all the -std=c++14 with -std=c++20 ;-)
This is depressing all this time wasted writing old code... :-(

Wish I could! It was hard enough to get the LLVM project switched over from a terrible-subset-of C++11 to C++14.

}

void SYCLIntegrationHeader::endKernel() {
Expand Down
63 changes: 39 additions & 24 deletions clang/test/CodeGenSYCL/integration_header.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,41 +25,56 @@
// CHECK-NEXT: };
//
// CHECK: static constexpr
// CHECK-NEXT: const bool param_omit_table[] = {
// CHECK-NEXT: // OMIT_TABLE_BEGIN
// CHECK-NEXT: //--- _ZTSZ4mainE12first_kernel
// CHECK-NEXT: false, false, false, false, false, false, false, false, false, false, false, false,
// CHECK-NEXT: //--- _ZTSN16second_namespace13second_kernelIcEE
// CHECK-NEXT: false, false, false, false, false, false,
// CHECK-NEXT: //--- _ZTS12third_kernelILi1Ei5pointIZ4mainE1XEE
// CHECK-NEXT: false, false, false, false, false, false,
// CHECK-NEXT: //--- _ZTS13fourth_kernelIJN15template_arg_ns14namespaced_argILi1EEEEE
// CHECK-NEXT: false, false, false, false, false,
// CHECK-NEXT: //--- _ZTSZ4mainE16accessor_in_base
// CHECK-NEXT: false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,
// CHECK-NEXT: // OMIT_TABLE_END
// CHECK-NEXT: };
// CHECK: static constexpr
// CHECK-NEXT: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZ4mainE12first_kernel
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 1, 4 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 12 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 24 },
// CHECK-NEXT: { kernel_param_kind_t::kind_sampler, 8, 40 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0, param_omit_table[0]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 1, 4, param_omit_table[1]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8, param_omit_table[2]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 12, param_omit_table[3] | (param_omit_table[4] << 1) | (param_omit_table[5] << 2) | (param_omit_table[6] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 24, param_omit_table[7] | (param_omit_table[8] << 1) | (param_omit_table[9] << 2) | (param_omit_table[10] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_sampler, 8, 40, param_omit_table[11]},
// CHECK-EMPTY:
// CHECK-NEXT: //--- _ZTSN16second_namespace13second_kernelIcEE
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 4 },
// CHECK-NEXT: { kernel_param_kind_t::kind_sampler, 8, 16 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0, param_omit_table[12]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 4, param_omit_table[13] | (param_omit_table[14] << 1) | (param_omit_table[15] << 2) | (param_omit_table[16] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_sampler, 8, 16, param_omit_table[17]},
// CHECK-EMPTY:
// CHECK-NEXT: //--- _ZTS12third_kernelILi1Ei5pointIZ4mainE1XEE
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 4 },
// CHECK-NEXT: { kernel_param_kind_t::kind_sampler, 8, 16 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0, param_omit_table[18]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 4, param_omit_table[19] | (param_omit_table[20] << 1) | (param_omit_table[21] << 2) | (param_omit_table[22] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_sampler, 8, 16, param_omit_table[23]},
// CHECK-EMPTY:
// CHECK-NEXT: //--- _ZTS13fourth_kernelIJN15template_arg_ns14namespaced_argILi1EEEEE
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 4 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0, param_omit_table[24]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 6112, 4, param_omit_table[25] | (param_omit_table[26] << 1) | (param_omit_table[27] << 2) | (param_omit_table[28] << 3)},
// CHECK-EMPTY:
// CHECK-NEXT: //--- _ZTSZ4mainE16accessor_in_base
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 4 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 8 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 20 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 24 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 36 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 40 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 52 },
// CHECK-NEXT: //--- _ZTSZ4mainE16accessor_in_base
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0, param_omit_table[29]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 4, param_omit_table[30]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 8, param_omit_table[31] | (param_omit_table[32] << 1) | (param_omit_table[33] << 2) | (param_omit_table[34] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 20, param_omit_table[35]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 24, param_omit_table[36] | (param_omit_table[37] << 1) | (param_omit_table[38] << 2) | (param_omit_table[39] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 36, param_omit_table[40]},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 40, param_omit_table[41] | (param_omit_table[42] << 1) | (param_omit_table[43] << 2) | (param_omit_table[44] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 52, param_omit_table[45] | (param_omit_table[46] << 1) | (param_omit_table[47] << 2) | (param_omit_table[48] << 3)},
// CHECK-EMPTY:
// CHECK-NEXT: };
//

// CHECK: template <> struct KernelInfo<class first_kernel> {
// CHECK: template <> struct KernelInfo<::second_namespace::second_kernel<char>> {
// CHECK: template <> struct KernelInfo<::third_kernel<1, int, ::point<X>>> {
Expand Down
16 changes: 11 additions & 5 deletions clang/test/CodeGenSYCL/kernel-param-acc-array-ih.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,26 @@
// CHECK-NEXT: const char* const kernel_names[] = {
// CHECK-NEXT: "_ZTSZ4mainE8kernel_A"
// CHECK-NEXT: };

//
// CHECK: static constexpr
// CHECK-NEXT: const bool param_omit_table[] = {
// CHECK-NEXT: // OMIT_TABLE_BEGIN
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_A
// CHECK-NEXT: false, false, false, false, false, false, false, false,
// CHECK-NEXT: // OMIT_TABLE_END
// CHECK-NEXT: };
//
// CHECK: static constexpr
// CHECK-NEXT: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_A
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 12 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0, param_omit_table[0] | (param_omit_table[1] << 1) | (param_omit_table[2] << 2) | (param_omit_table[3] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 12, param_omit_table[4] | (param_omit_table[5] << 1) | (param_omit_table[6] << 2) | (param_omit_table[7] << 3)},
// CHECK-EMPTY:
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const unsigned kernel_signature_start[] = {
// CHECK-NEXT: 0 // _ZTSZ4mainE8kernel_A
// CHECK-NEXT: };

// CHECK: template <> struct KernelInfo<class kernel_A> {

#include <sycl.hpp>
Expand Down
14 changes: 11 additions & 3 deletions clang/test/CodeGenSYCL/kernel-param-member-acc-array-ih.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,19 @@
// CHECK-NEXT: "_ZTSZ4mainE8kernel_C"
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const bool param_omit_table[] = {
// CHECK-NEXT: // OMIT_TABLE_BEGIN
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_C
// CHECK-NEXT: false, false, false, false, false, false, false, false,
// CHECK-NEXT: // OMIT_TABLE_END
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_C
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 12 },
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_C
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0, param_omit_table[0] | (param_omit_table[1] << 1) | (param_omit_table[2] << 2) | (param_omit_table[3] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 12, param_omit_table[4] | (param_omit_table[5] << 1) | (param_omit_table[6] << 2) | (param_omit_table[7] << 3)},
// CHECK-EMPTY:
// CHECK-NEXT: };

Expand Down
20 changes: 14 additions & 6 deletions clang/test/CodeGenSYCL/kernel-param-pod-array-ih.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,22 @@
// CHECK-NEXT: "_ZTSZ4mainE8kernel_B"
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const bool param_omit_table[] = {
// CHECK-NEXT: // OMIT_TABLE_BEGIN
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_B
// CHECK-NEXT: false, false, false, false, false,
// CHECK-NEXT: // OMIT_TABLE_END
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_B
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 4 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16 },
// CHECK-NEXT: //--- _ZTSZ4mainE8kernel_B
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 0, param_omit_table[0]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 4, param_omit_table[1]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 8, param_omit_table[2]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12, param_omit_table[3]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16, param_omit_table[4]},
// CHECK-EMPTY:
// CHECK-NEXT: };

Expand Down
34 changes: 24 additions & 10 deletions clang/test/CodeGenSYCL/struct_kernel_param.cpp
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
// RUN: %clang_cc1 -I %S/Inputs -fsycl -fsycl-is-device -triple spir64-unknown-unknown-sycldevice -fsycl-int-header=%t.h %s -o %t.out
// RUN: FileCheck -input-file=%t.h %s

// CHECK: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZZ5test0vENK3$_0clERN2cl4sycl7handlerEE8MyKernel
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 20 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 24 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 28 },
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 32 },
// CHECK: static constexpr
// CHECK-NEXT: const char* const kernel_names[] = {
// CHECK-NEXT: "_ZTSZZ5test0vENK3$_0clERN2cl4sycl7handlerEE8MyKernel"
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const bool param_omit_table[] = {
// CHECK-NEXT: // OMIT_TABLE_BEGIN
// CHECK-NEXT: //--- _ZTSZZ5test0vENK3$_0clERN2cl4sycl7handlerEE8MyKernel
// CHECK-NEXT: false, false, false, false, false, false, false, false, false, false,
// CHECK-NEXT: // OMIT_TABLE_END
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZZ5test0vENK3$_0clERN2cl4sycl7handlerEE8MyKernel
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0, param_omit_table[0] | (param_omit_table[1] << 1) | (param_omit_table[2] << 2) | (param_omit_table[3] << 3)},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 12, param_omit_table[4]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 16, param_omit_table[5]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 20, param_omit_table[6]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 24, param_omit_table[7]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 28, param_omit_table[8]},
// CHECK-NEXT: { kernel_param_kind_t::kind_std_layout, 4, 32, param_omit_table[9]},
// CHECK-EMPTY:
// CHECK-NEXT:};
// CHECK-NEXT: };

// This test checks if compiler accepts structures as kernel parameters.

Expand Down
4 changes: 2 additions & 2 deletions clang/test/CodeGenSYCL/usm-int-header.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// RUN: %clang_cc1 -I %S/Inputs -fsycl -fsycl -fsycl-is-device -fsycl-int-header=%t.h %s -o %t.out
// RUN: FileCheck -input-file=%t.h %s --check-prefix=INT-HEADER

// INT-HEADER:{ kernel_param_kind_t::kind_pointer, 8, 0 },
// INT-HEADER:{ kernel_param_kind_t::kind_pointer, 8, 8 },
// INT-HEADER:{ kernel_param_kind_t::kind_pointer, 8, 0, param_omit_table[0]},
// INT-HEADER:{ kernel_param_kind_t::kind_pointer, 8, 8, param_omit_table[1]},

//==--usm-int-header.cpp - USM kernel param aspace and int header test -----==//
//
Expand Down
12 changes: 10 additions & 2 deletions clang/test/CodeGenSYCL/wrapped-accessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,18 @@
// CHECK-NEXT: "_ZTSZ4mainE14wrapped_access"
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const bool param_omit_table[] = {
// CHECK-NEXT: // OMIT_TABLE_BEGIN
// CHECK-NEXT: //--- _ZTSZ4mainE14wrapped_access
// CHECK-NEXT: false, false, false, false,
// CHECK-NEXT: // OMIT_TABLE_END
// CHECK-NEXT: };

// CHECK: static constexpr
// CHECK-NEXT: const kernel_param_desc_t kernel_signatures[] = {
// CHECK-NEXT: //--- _ZTSZ4mainE14wrapped_access
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0 },
// CHECK-NEXT: //--- _ZTSZ4mainE14wrapped_access
// CHECK-NEXT: { kernel_param_kind_t::kind_accessor, 4062, 0, param_omit_table[0] | (param_omit_table[1] << 1) | (param_omit_table[2] << 2) | (param_omit_table[3] << 3)},
// CHECK-EMPTY:
// CHECK-NEXT: };

Expand Down
Loading