forked from OSchip/llvm-project
[libclang] [OpenCL] Expose half type.
Expose the half type (fp16) through libclang and the python bindings. It seems CXType_LastBuiltin was not updated in b2ea6d9 ("Enable support for __float128 in Clang", 2016-04-13), so update it now. Add an Index test for OpenCL types; in the future we will add other OpenCL types such as images to this test. Patch by Sven van Haastregt. Differential Revision: https://reviews.llvm.org/D29718 llvm-svn: 294754
This commit is contained in:
parent
a72fad980c
commit
6ea21852af
|
@ -1887,6 +1887,7 @@ TypeKind.OBJCID = TypeKind(27)
|
|||
TypeKind.OBJCCLASS = TypeKind(28)
|
||||
TypeKind.OBJCSEL = TypeKind(29)
|
||||
TypeKind.FLOAT128 = TypeKind(30)
|
||||
TypeKind.HALF = TypeKind(31)
|
||||
TypeKind.COMPLEX = TypeKind(100)
|
||||
TypeKind.POINTER = TypeKind(101)
|
||||
TypeKind.BLOCKPOINTER = TypeKind(102)
|
||||
|
|
|
@ -3011,8 +3011,9 @@ enum CXTypeKind {
|
|||
CXType_ObjCClass = 28,
|
||||
CXType_ObjCSel = 29,
|
||||
CXType_Float128 = 30,
|
||||
CXType_Half = 31,
|
||||
CXType_FirstBuiltin = CXType_Void,
|
||||
CXType_LastBuiltin = CXType_ObjCSel,
|
||||
CXType_LastBuiltin = CXType_Half,
|
||||
|
||||
CXType_Complex = 100,
|
||||
CXType_Pointer = 101,
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// RUN: c-index-test -test-print-type %s | FileCheck %s
|
||||
|
||||
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
||||
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
|
||||
|
||||
typedef half half4 __attribute__((ext_vector_type(4)));
|
||||
typedef float float4 __attribute__((ext_vector_type(4)));
|
||||
typedef double double4 __attribute__((ext_vector_type(4)));
|
||||
|
||||
void kernel testFloatTypes() {
|
||||
half scalarHalf;
|
||||
half4 vectorHalf;
|
||||
float scalarFloat;
|
||||
float4 vectorFloat;
|
||||
double scalarDouble;
|
||||
double4 vectorDouble;
|
||||
}
|
||||
|
||||
// CHECK: VarDecl=scalarHalf:11:8 (Definition) [type=half] [typekind=Half] [isPOD=1]
|
||||
// CHECK: VarDecl=vectorHalf:12:9 (Definition) [type=half4] [typekind=Typedef] [canonicaltype=half __attribute__((ext_vector_type(4)))] [canonicaltypekind=Unexposed] [isPOD=1]
|
||||
// CHECK: VarDecl=scalarFloat:13:9 (Definition) [type=float] [typekind=Float] [isPOD=1]
|
||||
// CHECK: VarDecl=vectorFloat:14:10 (Definition) [type=float4] [typekind=Typedef] [canonicaltype=float __attribute__((ext_vector_type(4)))] [canonicaltypekind=Unexposed] [isPOD=1]
|
||||
// CHECK: VarDecl=scalarDouble:15:10 (Definition) [type=double] [typekind=Double] [isPOD=1]
|
||||
// CHECK: VarDecl=vectorDouble:16:11 (Definition) [type=double4] [typekind=Typedef] [canonicaltype=double __attribute__((ext_vector_type(4)))] [canonicaltypekind=Unexposed] [isPOD=1]
|
|
@ -48,6 +48,7 @@ static CXTypeKind GetBuiltinTypeKind(const BuiltinType *BT) {
|
|||
BTCASE(Long);
|
||||
BTCASE(LongLong);
|
||||
BTCASE(Int128);
|
||||
BTCASE(Half);
|
||||
BTCASE(Float);
|
||||
BTCASE(Double);
|
||||
BTCASE(LongDouble);
|
||||
|
@ -503,6 +504,7 @@ CXString clang_getTypeKindSpelling(enum CXTypeKind K) {
|
|||
TKIND(Long);
|
||||
TKIND(LongLong);
|
||||
TKIND(Int128);
|
||||
TKIND(Half);
|
||||
TKIND(Float);
|
||||
TKIND(Double);
|
||||
TKIND(LongDouble);
|
||||
|
|
Loading…
Reference in New Issue