Skip to content

Commit f0b71e1

Browse files
[OpaquePtr] Emit target extension types for sampled images for SPIR-V. (#8957)
1 parent 6143388 commit f0b71e1

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

clang/lib/CodeGen/TargetInfo.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11249,9 +11249,17 @@ llvm::Type *CommonSPIRTargetCodeGenInfo::getOpenCLType(CodeGenModule &CGM,
1124911249
if (auto *BuiltinTy = dyn_cast<BuiltinType>(Ty)) {
1125011250
enum AccessQualifier : unsigned { AQ_ro = 0, AQ_wo = 1, AQ_rw = 2 };
1125111251
switch (BuiltinTy->getKind()) {
11252+
// clang-format off
1125211253
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
1125311254
case BuiltinType::Id: \
1125411255
return getSPIRVImageType(Ctx, "spirv.Image", #ImgType, AQ_##Suffix);
11256+
#include "clang/Basic/OpenCLImageTypes.def"
11257+
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
11258+
case BuiltinType::Sampled##Id: \
11259+
return getSPIRVImageType(Ctx, "spirv.SampledImage", #ImgType, AQ_##Suffix);
11260+
// clang-format on
11261+
#define IMAGE_WRITE_TYPE(Type, Id, Ext)
11262+
#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext)
1125511263
#include "clang/Basic/OpenCLImageTypes.def"
1125611264
case BuiltinType::OCLSampler:
1125711265
return llvm::TargetExtType::get(Ctx, "spirv.Sampler");
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - | FileCheck %s
2-
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - -cl-std=clc++ | FileCheck %s
1+
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-X86
2+
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - -cl-std=clc++ | FileCheck %s --check-prefix=CHECK-X86
3+
// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -O0 -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-SPIR
4+
// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -O0 -emit-llvm -o - -cl-std=clc++ | FileCheck %s --check-prefix=CHECK-SPIR
35

46
__attribute__((overloadable)) void my_read_image(__ocl_sampled_image1d_ro_t img);
57
__attribute__((overloadable)) void my_read_image(__ocl_sampled_image2d_ro_t img);
68

79
void test_read_image(__ocl_sampled_image1d_ro_t img_ro, __ocl_sampled_image2d_ro_t img_2d) {
8-
// CHECK: call void @_Z13my_read_image32__spirv_SampledImage__image1d_ro(ptr %{{[0-9]+}})
10+
// CHECK-X86: call void @_Z13my_read_image32__spirv_SampledImage__image1d_ro(ptr %{{[0-9]+}})
11+
// CHECK-SPIR: call spir_func void @_Z13my_read_image32__spirv_SampledImage__image1d_ro(target("spirv.SampledImage", void, 0, 0, 0, 0, 0, 0, 0) %{{[0-9]+}})
912
my_read_image(img_ro);
10-
// CHECK: call void @_Z13my_read_image32__spirv_SampledImage__image2d_ro(ptr %{{[0-9]+}})
13+
// CHECK-X86: call void @_Z13my_read_image32__spirv_SampledImage__image2d_ro(ptr %{{[0-9]+}})
14+
// CHECK-SPIR: call spir_func void @_Z13my_read_image32__spirv_SampledImage__image2d_ro(target("spirv.SampledImage", void, 1, 0, 0, 0, 0, 0, 0) %{{[0-9]+}})
1115
my_read_image(img_2d);
1216
}

0 commit comments

Comments
 (0)