Skip to content

Commit 2f8d080

Browse files
committed
[SYCL] Emit SPIR-V specific OpenCL C++ metadata.
Signed-off-by: Vladimir Lazarev <[email protected]>
1 parent f29e1cd commit 2f8d080

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -552,21 +552,23 @@ void CodeGenModule::Release() {
552552
}
553553
}
554554

555-
// Emit SYCL specific module metadata: OpenCL/SPIR version.
555+
// Emit SYCL specific module metadata: OpenCL/SPIR version, OpenCL language.
556556
if (LangOpts.SYCL) {
557-
llvm::Metadata *OCLVerElts[] = {
558-
llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int32Ty, 1)),
559-
llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int32Ty, 2))};
560-
llvm::NamedMDNode *OCLVerMD =
561-
TheModule.getOrInsertNamedMetadata("opencl.ocl.version");
562557
llvm::LLVMContext &Ctx = TheModule.getContext();
563-
OCLVerMD->addOperand(llvm::MDNode::get(Ctx, OCLVerElts));
564558
llvm::Metadata *SPIRVerElts[] = {
565559
llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int32Ty, 1)),
566560
llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int32Ty, 2))};
567561
llvm::NamedMDNode *SPIRVerMD =
568562
TheModule.getOrInsertNamedMetadata("opencl.spir.version");
569563
SPIRVerMD->addOperand(llvm::MDNode::get(Ctx, SPIRVerElts));
564+
// We are trying to look like OpenCL C++ for SPIR-V translator.
565+
// 4 - OpenCL_CPP, 100000 - OpenCL C++ version 1.0
566+
llvm::Metadata *SPIRVSourceElts[] = {
567+
llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int32Ty, 4)),
568+
llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(Int32Ty, 100000))};
569+
llvm::NamedMDNode *SPIRVSourceMD =
570+
TheModule.getOrInsertNamedMetadata("spirv.Source");
571+
SPIRVSourceMD->addOperand(llvm::MDNode::get(Ctx, SPIRVSourceElts));
570572
}
571573

572574
if (uint32_t PLevel = Context.getLangOpts().PICLevel) {

clang/test/CodeGenSYCL/spir-opencl-version.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ int main() {
2020
}
2121

2222

23-
// CHECK: !opencl.ocl.version = !{[[VER:![0-9]+]]}
24-
// CHECK: !opencl.spir.version = !{[[VER]]}
25-
// CHECK: [[VER]] = !{i32 1, i32 2}
23+
// CHECK: !opencl.spir.version = !{[[SPIR:![0-9]+]]}
24+
// CHECK: !spirv.Source = !{[[LANG:![0-9]+]]}
25+
// CHECK: [[SPIR]] = !{i32 1, i32 2}
26+
// CHECK: [[LANG]] = !{i32 4, i32 100000}

0 commit comments

Comments
 (0)