Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
6 changes: 6 additions & 0 deletions clang/lib/CodeGen/TargetInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11252,6 +11252,12 @@ llvm::Type *CommonSPIRTargetCodeGenInfo::getOpenCLType(CodeGenModule &CGM,
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
case BuiltinType::Id: \
return getSPIRVImageType(Ctx, "spirv.Image", #ImgType, AQ_##Suffix);
#include "clang/Basic/OpenCLImageTypes.def"
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
case BuiltinType::Sampled##Id: \
return getSPIRVImageType(Ctx, "spirv.SampledImage", #ImgType, AQ_##Suffix);
#define IMAGE_WRITE_TYPE(Type, Id, Ext)
#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext)
#include "clang/Basic/OpenCLImageTypes.def"
case BuiltinType::OCLSampler:
return llvm::TargetExtType::get(Ctx, "spirv.Sampler");
Expand Down
12 changes: 8 additions & 4 deletions clang/test/CodeGenOpenCL/sampled_image.cl
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - | FileCheck %s
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - -cl-std=clc++ | FileCheck %s
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-X86
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -emit-llvm -o - -cl-std=clc++ | FileCheck %s --check-prefix=CHECK-X86
// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -O0 -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-SPIR
// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -O0 -emit-llvm -o - -cl-std=clc++ | FileCheck %s --check-prefix=CHECK-SPIR

__attribute__((overloadable)) void my_read_image(__ocl_sampled_image1d_ro_t img);
__attribute__((overloadable)) void my_read_image(__ocl_sampled_image2d_ro_t img);

void test_read_image(__ocl_sampled_image1d_ro_t img_ro, __ocl_sampled_image2d_ro_t img_2d) {
// CHECK: call void @_Z13my_read_image32__spirv_SampledImage__image1d_ro(ptr %{{[0-9]+}})
// CHECK-X86: call void @_Z13my_read_image32__spirv_SampledImage__image1d_ro(ptr %{{[0-9]+}})
// 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]+}})
my_read_image(img_ro);
// CHECK: call void @_Z13my_read_image32__spirv_SampledImage__image2d_ro(ptr %{{[0-9]+}})
// CHECK-X86: call void @_Z13my_read_image32__spirv_SampledImage__image2d_ro(ptr %{{[0-9]+}})
// 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]+}})
my_read_image(img_2d);
}