@@ -37,6 +37,28 @@ llvm::Type *CGOpenCLRuntime::convertOpenCLSpecificType(const Type *T) {
37
37
llvm::LLVMContext& Ctx = CGM.getLLVMContext ();
38
38
uint32_t AddrSpc = CGM.getContext ().getTargetAddressSpace (
39
39
CGM.getContext ().getOpenCLTypeAddrSpace (T));
40
+
41
+ if (CGM.getTriple ().isNVPTX ()) {
42
+ switch (cast<BuiltinType>(T)->getKind ()) {
43
+ default :
44
+ break ;
45
+ #define IMAGE_TYPE (ImgType, Id, SingletonId, Access, Suffix ) \
46
+ case BuiltinType::Id: \
47
+ return llvm::IntegerType::getInt64Ty (CGM.getLLVMContext ());
48
+ #include " clang/Basic/OpenCLImageTypes.def"
49
+ #define IMAGE_TYPE (ImgType, Id, SingletonId, Access, Suffix ) \
50
+ case BuiltinType::Sampled##Id: \
51
+ return llvm::StructType::get ( \
52
+ llvm::IntegerType::getInt64Ty (CGM.getLLVMContext ()), \
53
+ llvm::IntegerType::getInt32Ty (CGM.getLLVMContext ()));
54
+ #define IMAGE_WRITE_TYPE (Type, Id, Ext )
55
+ #define IMAGE_READ_WRITE_TYPE (Type, Id, Ext )
56
+ #include " clang/Basic/OpenCLImageTypes.def"
57
+ case BuiltinType::OCLSampler:
58
+ return llvm::IntegerType::getInt32Ty (CGM.getLLVMContext ());
59
+ }
60
+ }
61
+
40
62
switch (cast<BuiltinType>(T)->getKind ()) {
41
63
default :
42
64
llvm_unreachable (" Unexpected opencl builtin type!" );
0 commit comments