forked from OSchip/llvm-project
Emit OpenCL metadata when targeting SPIR-V
This is required for converting function calls such as get_global_id() into SPIR-V builtins. Differential Revision: https://reviews.llvm.org/D123049
This commit is contained in:
parent
1acba8a4b5
commit
15a1769631
|
@ -784,7 +784,7 @@ void CodeGenModule::Release() {
|
|||
LangOpts.OpenMP);
|
||||
|
||||
// Emit OpenCL specific module metadata: OpenCL/SPIR version.
|
||||
if (LangOpts.OpenCL) {
|
||||
if (LangOpts.OpenCL || (LangOpts.CUDAIsDevice && getTriple().isSPIRV())) {
|
||||
EmitOpenCLMetadata();
|
||||
// Emit SPIR version.
|
||||
if (getTriple().isSPIR()) {
|
||||
|
|
|
@ -3328,6 +3328,10 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
|
|||
// whereas respecting contract flag in backend.
|
||||
Opts.setDefaultFPContractMode(LangOptions::FPM_FastHonorPragmas);
|
||||
} else if (Opts.CUDA) {
|
||||
if (T.isSPIRV()) {
|
||||
// Emit OpenCL version metadata in LLVM IR when targeting SPIR-V.
|
||||
Opts.OpenCLVersion = 200;
|
||||
}
|
||||
// Allow fuse across statements disregarding pragmas.
|
||||
Opts.setDefaultFPContractMode(LangOptions::FPM_Fast);
|
||||
}
|
||||
|
|
|
@ -7,3 +7,6 @@
|
|||
// CHECK: define spir_kernel void @_Z6kernelv()
|
||||
|
||||
__attribute__((global)) void kernel() { return; }
|
||||
|
||||
// CHECK: !opencl.ocl.version = !{[[OCL:![0-9]+]]}
|
||||
// CHECK: [[OCL]] = !{i32 2, i32 0}
|
||||
|
|
Loading…
Reference in New Issue