stuart created this revision. stuart added reviewers: svenvh, Anastasia, airlied, yaxunl. Herald added a subscriber: ldrumm. stuart requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Use the `pure` and `const` attributes for the `vload`, `vload_half` and `vloada_half` builtins. For the //global//, //local//, //private// and //generic// address spaces, the `pure` attribute (or `readonly`) can be used. For the //constant// address space, the `const` attribute (or `readnone`) can be used. As memory in the //constant// address space is immutable, the statement in the langref that: "if a `readnone` function reads or writes memory visible to the program, or has other side-effects, the behavior is undefined" does not apply. The reading of immutable memory does not have side-effects, nor can it be affected by side-effects. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D110742 Files: clang/lib/Headers/opencl-c.h clang/lib/Sema/OpenCLBuiltins.td
Index: clang/lib/Sema/OpenCLBuiltins.td =================================================================== --- clang/lib/Sema/OpenCLBuiltins.td +++ clang/lib/Sema/OpenCLBuiltins.td @@ -792,21 +792,21 @@ // OpenCL v1.1 s6.11.7, v1.2 s6.12.7, v2.0 s6.13.7 - Vector Data Load and Store Functions // OpenCL Extension v1.1 s9.3.6 and s9.6.6, v1.2 s9.5.6, v2.0 s5.1.6 and s6.1.6 - Vector Data Load and Store Functions // --- Table 15 --- -multiclass VloadVstore<list<AddressSpace> addrspaces, bit defStores> { +multiclass VloadVstore<list<AddressSpace> addrspaces, bit defStores, list<bit> LoadAttr = Attr.Pure> { foreach AS = addrspaces in { foreach VSize = [2, 3, 4, 8, 16] in { foreach name = ["vload" # VSize] in { - def : Builtin<name, [VectorType<Char, VSize>, Size, PointerType<ConstType<Char>, AS>]>; - def : Builtin<name, [VectorType<UChar, VSize>, Size, PointerType<ConstType<UChar>, AS>]>; - def : Builtin<name, [VectorType<Short, VSize>, Size, PointerType<ConstType<Short>, AS>]>; - def : Builtin<name, [VectorType<UShort, VSize>, Size, PointerType<ConstType<UShort>, AS>]>; - def : Builtin<name, [VectorType<Int, VSize>, Size, PointerType<ConstType<Int>, AS>]>; - def : Builtin<name, [VectorType<UInt, VSize>, Size, PointerType<ConstType<UInt>, AS>]>; - def : Builtin<name, [VectorType<Long, VSize>, Size, PointerType<ConstType<Long>, AS>]>; - def : Builtin<name, [VectorType<ULong, VSize>, Size, PointerType<ConstType<ULong>, AS>]>; - def : Builtin<name, [VectorType<Float, VSize>, Size, PointerType<ConstType<Float>, AS>]>; - def : Builtin<name, [VectorType<Double, VSize>, Size, PointerType<ConstType<Double>, AS>]>; - def : Builtin<name, [VectorType<Half, VSize>, Size, PointerType<ConstType<Half>, AS>]>; + def : Builtin<name, [VectorType<Char, VSize>, Size, PointerType<ConstType<Char>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<UChar, VSize>, Size, PointerType<ConstType<UChar>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<Short, VSize>, Size, PointerType<ConstType<Short>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<UShort, VSize>, Size, PointerType<ConstType<UShort>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<Int, VSize>, Size, PointerType<ConstType<Int>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<UInt, VSize>, Size, PointerType<ConstType<UInt>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<Long, VSize>, Size, PointerType<ConstType<Long>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<ULong, VSize>, Size, PointerType<ConstType<ULong>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<Float, VSize>, Size, PointerType<ConstType<Float>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<Double, VSize>, Size, PointerType<ConstType<Double>, AS>], LoadAttr>; + def : Builtin<name, [VectorType<Half, VSize>, Size, PointerType<ConstType<Half>, AS>], LoadAttr>; } if defStores then { foreach name = ["vstore" # VSize] in { @@ -834,14 +834,14 @@ defm : VloadVstore<[GenericAS], 1>; } // vload with constant address space is available regardless of version. -defm : VloadVstore<[ConstantAS], 0>; +defm : VloadVstore<[ConstantAS], 0, Attr.Const>; -multiclass VloadVstoreHalf<list<AddressSpace> addrspaces, bit defStores> { +multiclass VloadVstoreHalf<list<AddressSpace> addrspaces, bit defStores, list<bit> LoadAttr = Attr.Pure> { foreach AS = addrspaces in { - def : Builtin<"vload_half", [Float, Size, PointerType<ConstType<Half>, AS>]>; + def : Builtin<"vload_half", [Float, Size, PointerType<ConstType<Half>, AS>], LoadAttr>; foreach VSize = [2, 3, 4, 8, 16] in { foreach name = ["vload_half" # VSize, "vloada_half" # VSize] in { - def : Builtin<name, [VectorType<Float, VSize>, Size, PointerType<ConstType<Half>, AS>]>; + def : Builtin<name, [VectorType<Float, VSize>, Size, PointerType<ConstType<Half>, AS>], LoadAttr>; } } if defStores then { @@ -867,8 +867,8 @@ let MinVersion = CL20 in { defm : VloadVstoreHalf<[GenericAS], 1>; } -// vload with constant address space is available regardless of version. -defm : VloadVstoreHalf<[ConstantAS], 0>; +// vload_half and vloada_half with constant address space are available regardless of version. +defm : VloadVstoreHalf<[ConstantAS], 0, Attr.Const>; // OpenCL v3.0 s6.15.8 - Synchronization Functions. def : Builtin<"barrier", [Void, MemFenceFlags], Attr.Convergent>; Index: clang/lib/Headers/opencl-c.h =================================================================== --- clang/lib/Headers/opencl-c.h +++ clang/lib/Headers/opencl-c.h @@ -11187,305 +11187,305 @@ * 64-bit aligned if gentype is long, ulong, double. */ -char2 __ovld vload2(size_t offset, const __constant char *p); -uchar2 __ovld vload2(size_t offset, const __constant uchar *p); -short2 __ovld vload2(size_t offset, const __constant short *p); -ushort2 __ovld vload2(size_t offset, const __constant ushort *p); -int2 __ovld vload2(size_t offset, const __constant int *p); -uint2 __ovld vload2(size_t offset, const __constant uint *p); -long2 __ovld vload2(size_t offset, const __constant long *p); -ulong2 __ovld vload2(size_t offset, const __constant ulong *p); -float2 __ovld vload2(size_t offset, const __constant float *p); -char3 __ovld vload3(size_t offset, const __constant char *p); -uchar3 __ovld vload3(size_t offset, const __constant uchar *p); -short3 __ovld vload3(size_t offset, const __constant short *p); -ushort3 __ovld vload3(size_t offset, const __constant ushort *p); -int3 __ovld vload3(size_t offset, const __constant int *p); -uint3 __ovld vload3(size_t offset, const __constant uint *p); -long3 __ovld vload3(size_t offset, const __constant long *p); -ulong3 __ovld vload3(size_t offset, const __constant ulong *p); -float3 __ovld vload3(size_t offset, const __constant float *p); -char4 __ovld vload4(size_t offset, const __constant char *p); -uchar4 __ovld vload4(size_t offset, const __constant uchar *p); -short4 __ovld vload4(size_t offset, const __constant short *p); -ushort4 __ovld vload4(size_t offset, const __constant ushort *p); -int4 __ovld vload4(size_t offset, const __constant int *p); -uint4 __ovld vload4(size_t offset, const __constant uint *p); -long4 __ovld vload4(size_t offset, const __constant long *p); -ulong4 __ovld vload4(size_t offset, const __constant ulong *p); -float4 __ovld vload4(size_t offset, const __constant float *p); -char8 __ovld vload8(size_t offset, const __constant char *p); -uchar8 __ovld vload8(size_t offset, const __constant uchar *p); -short8 __ovld vload8(size_t offset, const __constant short *p); -ushort8 __ovld vload8(size_t offset, const __constant ushort *p); -int8 __ovld vload8(size_t offset, const __constant int *p); -uint8 __ovld vload8(size_t offset, const __constant uint *p); -long8 __ovld vload8(size_t offset, const __constant long *p); -ulong8 __ovld vload8(size_t offset, const __constant ulong *p); -float8 __ovld vload8(size_t offset, const __constant float *p); -char16 __ovld vload16(size_t offset, const __constant char *p); -uchar16 __ovld vload16(size_t offset, const __constant uchar *p); -short16 __ovld vload16(size_t offset, const __constant short *p); -ushort16 __ovld vload16(size_t offset, const __constant ushort *p); -int16 __ovld vload16(size_t offset, const __constant int *p); -uint16 __ovld vload16(size_t offset, const __constant uint *p); -long16 __ovld vload16(size_t offset, const __constant long *p); -ulong16 __ovld vload16(size_t offset, const __constant ulong *p); -float16 __ovld vload16(size_t offset, const __constant float *p); +char2 __ovld __cnfn vload2(size_t offset, const __constant char *p); +uchar2 __ovld __cnfn vload2(size_t offset, const __constant uchar *p); +short2 __ovld __cnfn vload2(size_t offset, const __constant short *p); +ushort2 __ovld __cnfn vload2(size_t offset, const __constant ushort *p); +int2 __ovld __cnfn vload2(size_t offset, const __constant int *p); +uint2 __ovld __cnfn vload2(size_t offset, const __constant uint *p); +long2 __ovld __cnfn vload2(size_t offset, const __constant long *p); +ulong2 __ovld __cnfn vload2(size_t offset, const __constant ulong *p); +float2 __ovld __cnfn vload2(size_t offset, const __constant float *p); +char3 __ovld __cnfn vload3(size_t offset, const __constant char *p); +uchar3 __ovld __cnfn vload3(size_t offset, const __constant uchar *p); +short3 __ovld __cnfn vload3(size_t offset, const __constant short *p); +ushort3 __ovld __cnfn vload3(size_t offset, const __constant ushort *p); +int3 __ovld __cnfn vload3(size_t offset, const __constant int *p); +uint3 __ovld __cnfn vload3(size_t offset, const __constant uint *p); +long3 __ovld __cnfn vload3(size_t offset, const __constant long *p); +ulong3 __ovld __cnfn vload3(size_t offset, const __constant ulong *p); +float3 __ovld __cnfn vload3(size_t offset, const __constant float *p); +char4 __ovld __cnfn vload4(size_t offset, const __constant char *p); +uchar4 __ovld __cnfn vload4(size_t offset, const __constant uchar *p); +short4 __ovld __cnfn vload4(size_t offset, const __constant short *p); +ushort4 __ovld __cnfn vload4(size_t offset, const __constant ushort *p); +int4 __ovld __cnfn vload4(size_t offset, const __constant int *p); +uint4 __ovld __cnfn vload4(size_t offset, const __constant uint *p); +long4 __ovld __cnfn vload4(size_t offset, const __constant long *p); +ulong4 __ovld __cnfn vload4(size_t offset, const __constant ulong *p); +float4 __ovld __cnfn vload4(size_t offset, const __constant float *p); +char8 __ovld __cnfn vload8(size_t offset, const __constant char *p); +uchar8 __ovld __cnfn vload8(size_t offset, const __constant uchar *p); +short8 __ovld __cnfn vload8(size_t offset, const __constant short *p); +ushort8 __ovld __cnfn vload8(size_t offset, const __constant ushort *p); +int8 __ovld __cnfn vload8(size_t offset, const __constant int *p); +uint8 __ovld __cnfn vload8(size_t offset, const __constant uint *p); +long8 __ovld __cnfn vload8(size_t offset, const __constant long *p); +ulong8 __ovld __cnfn vload8(size_t offset, const __constant ulong *p); +float8 __ovld __cnfn vload8(size_t offset, const __constant float *p); +char16 __ovld __cnfn vload16(size_t offset, const __constant char *p); +uchar16 __ovld __cnfn vload16(size_t offset, const __constant uchar *p); +short16 __ovld __cnfn vload16(size_t offset, const __constant short *p); +ushort16 __ovld __cnfn vload16(size_t offset, const __constant ushort *p); +int16 __ovld __cnfn vload16(size_t offset, const __constant int *p); +uint16 __ovld __cnfn vload16(size_t offset, const __constant uint *p); +long16 __ovld __cnfn vload16(size_t offset, const __constant long *p); +ulong16 __ovld __cnfn vload16(size_t offset, const __constant ulong *p); +float16 __ovld __cnfn vload16(size_t offset, const __constant float *p); #ifdef cl_khr_fp64 -double2 __ovld vload2(size_t offset, const __constant double *p); -double3 __ovld vload3(size_t offset, const __constant double *p); -double4 __ovld vload4(size_t offset, const __constant double *p); -double8 __ovld vload8(size_t offset, const __constant double *p); -double16 __ovld vload16(size_t offset, const __constant double *p); +double2 __ovld __cnfn vload2(size_t offset, const __constant double *p); +double3 __ovld __cnfn vload3(size_t offset, const __constant double *p); +double4 __ovld __cnfn vload4(size_t offset, const __constant double *p); +double8 __ovld __cnfn vload8(size_t offset, const __constant double *p); +double16 __ovld __cnfn vload16(size_t offset, const __constant double *p); #endif //cl_khr_fp64 #ifdef cl_khr_fp16 -half __ovld vload(size_t offset, const __constant half *p); -half2 __ovld vload2(size_t offset, const __constant half *p); -half3 __ovld vload3(size_t offset, const __constant half *p); -half4 __ovld vload4(size_t offset, const __constant half *p); -half8 __ovld vload8(size_t offset, const __constant half *p); -half16 __ovld vload16(size_t offset, const __constant half *p); +half __ovld __cnfn vload(size_t offset, const __constant half *p); +half2 __ovld __cnfn vload2(size_t offset, const __constant half *p); +half3 __ovld __cnfn vload3(size_t offset, const __constant half *p); +half4 __ovld __cnfn vload4(size_t offset, const __constant half *p); +half8 __ovld __cnfn vload8(size_t offset, const __constant half *p); +half16 __ovld __cnfn vload16(size_t offset, const __constant half *p); #endif //cl_khr_fp16 #if defined(__opencl_c_generic_address_space) -char2 __ovld vload2(size_t offset, const char *p); -uchar2 __ovld vload2(size_t offset, const uchar *p); -short2 __ovld vload2(size_t offset, const short *p); -ushort2 __ovld vload2(size_t offset, const ushort *p); -int2 __ovld vload2(size_t offset, const int *p); -uint2 __ovld vload2(size_t offset, const uint *p); -long2 __ovld vload2(size_t offset, const long *p); -ulong2 __ovld vload2(size_t offset, const ulong *p); -float2 __ovld vload2(size_t offset, const float *p); -char3 __ovld vload3(size_t offset, const char *p); -uchar3 __ovld vload3(size_t offset, const uchar *p); -short3 __ovld vload3(size_t offset, const short *p); -ushort3 __ovld vload3(size_t offset, const ushort *p); -int3 __ovld vload3(size_t offset, const int *p); -uint3 __ovld vload3(size_t offset, const uint *p); -long3 __ovld vload3(size_t offset, const long *p); -ulong3 __ovld vload3(size_t offset, const ulong *p); -float3 __ovld vload3(size_t offset, const float *p); -char4 __ovld vload4(size_t offset, const char *p); -uchar4 __ovld vload4(size_t offset, const uchar *p); -short4 __ovld vload4(size_t offset, const short *p); -ushort4 __ovld vload4(size_t offset, const ushort *p); -int4 __ovld vload4(size_t offset, const int *p); -uint4 __ovld vload4(size_t offset, const uint *p); -long4 __ovld vload4(size_t offset, const long *p); -ulong4 __ovld vload4(size_t offset, const ulong *p); -float4 __ovld vload4(size_t offset, const float *p); -char8 __ovld vload8(size_t offset, const char *p); -uchar8 __ovld vload8(size_t offset, const uchar *p); -short8 __ovld vload8(size_t offset, const short *p); -ushort8 __ovld vload8(size_t offset, const ushort *p); -int8 __ovld vload8(size_t offset, const int *p); -uint8 __ovld vload8(size_t offset, const uint *p); -long8 __ovld vload8(size_t offset, const long *p); -ulong8 __ovld vload8(size_t offset, const ulong *p); -float8 __ovld vload8(size_t offset, const float *p); -char16 __ovld vload16(size_t offset, const char *p); -uchar16 __ovld vload16(size_t offset, const uchar *p); -short16 __ovld vload16(size_t offset, const short *p); -ushort16 __ovld vload16(size_t offset, const ushort *p); -int16 __ovld vload16(size_t offset, const int *p); -uint16 __ovld vload16(size_t offset, const uint *p); -long16 __ovld vload16(size_t offset, const long *p); -ulong16 __ovld vload16(size_t offset, const ulong *p); -float16 __ovld vload16(size_t offset, const float *p); +char2 __ovld __purefn vload2(size_t offset, const char *p); +uchar2 __ovld __purefn vload2(size_t offset, const uchar *p); +short2 __ovld __purefn vload2(size_t offset, const short *p); +ushort2 __ovld __purefn vload2(size_t offset, const ushort *p); +int2 __ovld __purefn vload2(size_t offset, const int *p); +uint2 __ovld __purefn vload2(size_t offset, const uint *p); +long2 __ovld __purefn vload2(size_t offset, const long *p); +ulong2 __ovld __purefn vload2(size_t offset, const ulong *p); +float2 __ovld __purefn vload2(size_t offset, const float *p); +char3 __ovld __purefn vload3(size_t offset, const char *p); +uchar3 __ovld __purefn vload3(size_t offset, const uchar *p); +short3 __ovld __purefn vload3(size_t offset, const short *p); +ushort3 __ovld __purefn vload3(size_t offset, const ushort *p); +int3 __ovld __purefn vload3(size_t offset, const int *p); +uint3 __ovld __purefn vload3(size_t offset, const uint *p); +long3 __ovld __purefn vload3(size_t offset, const long *p); +ulong3 __ovld __purefn vload3(size_t offset, const ulong *p); +float3 __ovld __purefn vload3(size_t offset, const float *p); +char4 __ovld __purefn vload4(size_t offset, const char *p); +uchar4 __ovld __purefn vload4(size_t offset, const uchar *p); +short4 __ovld __purefn vload4(size_t offset, const short *p); +ushort4 __ovld __purefn vload4(size_t offset, const ushort *p); +int4 __ovld __purefn vload4(size_t offset, const int *p); +uint4 __ovld __purefn vload4(size_t offset, const uint *p); +long4 __ovld __purefn vload4(size_t offset, const long *p); +ulong4 __ovld __purefn vload4(size_t offset, const ulong *p); +float4 __ovld __purefn vload4(size_t offset, const float *p); +char8 __ovld __purefn vload8(size_t offset, const char *p); +uchar8 __ovld __purefn vload8(size_t offset, const uchar *p); +short8 __ovld __purefn vload8(size_t offset, const short *p); +ushort8 __ovld __purefn vload8(size_t offset, const ushort *p); +int8 __ovld __purefn vload8(size_t offset, const int *p); +uint8 __ovld __purefn vload8(size_t offset, const uint *p); +long8 __ovld __purefn vload8(size_t offset, const long *p); +ulong8 __ovld __purefn vload8(size_t offset, const ulong *p); +float8 __ovld __purefn vload8(size_t offset, const float *p); +char16 __ovld __purefn vload16(size_t offset, const char *p); +uchar16 __ovld __purefn vload16(size_t offset, const uchar *p); +short16 __ovld __purefn vload16(size_t offset, const short *p); +ushort16 __ovld __purefn vload16(size_t offset, const ushort *p); +int16 __ovld __purefn vload16(size_t offset, const int *p); +uint16 __ovld __purefn vload16(size_t offset, const uint *p); +long16 __ovld __purefn vload16(size_t offset, const long *p); +ulong16 __ovld __purefn vload16(size_t offset, const ulong *p); +float16 __ovld __purefn vload16(size_t offset, const float *p); #ifdef cl_khr_fp64 -double2 __ovld vload2(size_t offset, const double *p); -double3 __ovld vload3(size_t offset, const double *p); -double4 __ovld vload4(size_t offset, const double *p); -double8 __ovld vload8(size_t offset, const double *p); -double16 __ovld vload16(size_t offset, const double *p); +double2 __ovld __purefn vload2(size_t offset, const double *p); +double3 __ovld __purefn vload3(size_t offset, const double *p); +double4 __ovld __purefn vload4(size_t offset, const double *p); +double8 __ovld __purefn vload8(size_t offset, const double *p); +double16 __ovld __purefn vload16(size_t offset, const double *p); #endif //cl_khr_fp64 #ifdef cl_khr_fp16 -half __ovld vload(size_t offset, const half *p); -half2 __ovld vload2(size_t offset, const half *p); -half3 __ovld vload3(size_t offset, const half *p); -half4 __ovld vload4(size_t offset, const half *p); -half8 __ovld vload8(size_t offset, const half *p); -half16 __ovld vload16(size_t offset, const half *p); +half __ovld __purefn vload(size_t offset, const half *p); +half2 __ovld __purefn vload2(size_t offset, const half *p); +half3 __ovld __purefn vload3(size_t offset, const half *p); +half4 __ovld __purefn vload4(size_t offset, const half *p); +half8 __ovld __purefn vload8(size_t offset, const half *p); +half16 __ovld __purefn vload16(size_t offset, const half *p); #endif //cl_khr_fp16 #else -char2 __ovld vload2(size_t offset, const __global char *p); -uchar2 __ovld vload2(size_t offset, const __global uchar *p); -short2 __ovld vload2(size_t offset, const __global short *p); -ushort2 __ovld vload2(size_t offset, const __global ushort *p); -int2 __ovld vload2(size_t offset, const __global int *p); -uint2 __ovld vload2(size_t offset, const __global uint *p); -long2 __ovld vload2(size_t offset, const __global long *p); -ulong2 __ovld vload2(size_t offset, const __global ulong *p); -float2 __ovld vload2(size_t offset, const __global float *p); -char3 __ovld vload3(size_t offset, const __global char *p); -uchar3 __ovld vload3(size_t offset, const __global uchar *p); -short3 __ovld vload3(size_t offset, const __global short *p); -ushort3 __ovld vload3(size_t offset, const __global ushort *p); -int3 __ovld vload3(size_t offset, const __global int *p); -uint3 __ovld vload3(size_t offset, const __global uint *p); -long3 __ovld vload3(size_t offset, const __global long *p); -ulong3 __ovld vload3(size_t offset, const __global ulong *p); -float3 __ovld vload3(size_t offset, const __global float *p); -char4 __ovld vload4(size_t offset, const __global char *p); -uchar4 __ovld vload4(size_t offset, const __global uchar *p); -short4 __ovld vload4(size_t offset, const __global short *p); -ushort4 __ovld vload4(size_t offset, const __global ushort *p); -int4 __ovld vload4(size_t offset, const __global int *p); -uint4 __ovld vload4(size_t offset, const __global uint *p); -long4 __ovld vload4(size_t offset, const __global long *p); -ulong4 __ovld vload4(size_t offset, const __global ulong *p); -float4 __ovld vload4(size_t offset, const __global float *p); -char8 __ovld vload8(size_t offset, const __global char *p); -uchar8 __ovld vload8(size_t offset, const __global uchar *p); -short8 __ovld vload8(size_t offset, const __global short *p); -ushort8 __ovld vload8(size_t offset, const __global ushort *p); -int8 __ovld vload8(size_t offset, const __global int *p); -uint8 __ovld vload8(size_t offset, const __global uint *p); -long8 __ovld vload8(size_t offset, const __global long *p); -ulong8 __ovld vload8(size_t offset, const __global ulong *p); -float8 __ovld vload8(size_t offset, const __global float *p); -char16 __ovld vload16(size_t offset, const __global char *p); -uchar16 __ovld vload16(size_t offset, const __global uchar *p); -short16 __ovld vload16(size_t offset, const __global short *p); -ushort16 __ovld vload16(size_t offset, const __global ushort *p); -int16 __ovld vload16(size_t offset, const __global int *p); -uint16 __ovld vload16(size_t offset, const __global uint *p); -long16 __ovld vload16(size_t offset, const __global long *p); -ulong16 __ovld vload16(size_t offset, const __global ulong *p); -float16 __ovld vload16(size_t offset, const __global float *p); -char2 __ovld vload2(size_t offset, const __local char *p); -uchar2 __ovld vload2(size_t offset, const __local uchar *p); -short2 __ovld vload2(size_t offset, const __local short *p); -ushort2 __ovld vload2(size_t offset, const __local ushort *p); -int2 __ovld vload2(size_t offset, const __local int *p); -uint2 __ovld vload2(size_t offset, const __local uint *p); -long2 __ovld vload2(size_t offset, const __local long *p); -ulong2 __ovld vload2(size_t offset, const __local ulong *p); -float2 __ovld vload2(size_t offset, const __local float *p); -char3 __ovld vload3(size_t offset, const __local char *p); -uchar3 __ovld vload3(size_t offset, const __local uchar *p); -short3 __ovld vload3(size_t offset, const __local short *p); -ushort3 __ovld vload3(size_t offset, const __local ushort *p); -int3 __ovld vload3(size_t offset, const __local int *p); -uint3 __ovld vload3(size_t offset, const __local uint *p); -long3 __ovld vload3(size_t offset, const __local long *p); -ulong3 __ovld vload3(size_t offset, const __local ulong *p); -float3 __ovld vload3(size_t offset, const __local float *p); -char4 __ovld vload4(size_t offset, const __local char *p); -uchar4 __ovld vload4(size_t offset, const __local uchar *p); -short4 __ovld vload4(size_t offset, const __local short *p); -ushort4 __ovld vload4(size_t offset, const __local ushort *p); -int4 __ovld vload4(size_t offset, const __local int *p); -uint4 __ovld vload4(size_t offset, const __local uint *p); -long4 __ovld vload4(size_t offset, const __local long *p); -ulong4 __ovld vload4(size_t offset, const __local ulong *p); -float4 __ovld vload4(size_t offset, const __local float *p); -char8 __ovld vload8(size_t offset, const __local char *p); -uchar8 __ovld vload8(size_t offset, const __local uchar *p); -short8 __ovld vload8(size_t offset, const __local short *p); -ushort8 __ovld vload8(size_t offset, const __local ushort *p); -int8 __ovld vload8(size_t offset, const __local int *p); -uint8 __ovld vload8(size_t offset, const __local uint *p); -long8 __ovld vload8(size_t offset, const __local long *p); -ulong8 __ovld vload8(size_t offset, const __local ulong *p); -float8 __ovld vload8(size_t offset, const __local float *p); -char16 __ovld vload16(size_t offset, const __local char *p); -uchar16 __ovld vload16(size_t offset, const __local uchar *p); -short16 __ovld vload16(size_t offset, const __local short *p); -ushort16 __ovld vload16(size_t offset, const __local ushort *p); -int16 __ovld vload16(size_t offset, const __local int *p); -uint16 __ovld vload16(size_t offset, const __local uint *p); -long16 __ovld vload16(size_t offset, const __local long *p); -ulong16 __ovld vload16(size_t offset, const __local ulong *p); -float16 __ovld vload16(size_t offset, const __local float *p); -char2 __ovld vload2(size_t offset, const __private char *p); -uchar2 __ovld vload2(size_t offset, const __private uchar *p); -short2 __ovld vload2(size_t offset, const __private short *p); -ushort2 __ovld vload2(size_t offset, const __private ushort *p); -int2 __ovld vload2(size_t offset, const __private int *p); -uint2 __ovld vload2(size_t offset, const __private uint *p); -long2 __ovld vload2(size_t offset, const __private long *p); -ulong2 __ovld vload2(size_t offset, const __private ulong *p); -float2 __ovld vload2(size_t offset, const __private float *p); -char3 __ovld vload3(size_t offset, const __private char *p); -uchar3 __ovld vload3(size_t offset, const __private uchar *p); -short3 __ovld vload3(size_t offset, const __private short *p); -ushort3 __ovld vload3(size_t offset, const __private ushort *p); -int3 __ovld vload3(size_t offset, const __private int *p); -uint3 __ovld vload3(size_t offset, const __private uint *p); -long3 __ovld vload3(size_t offset, const __private long *p); -ulong3 __ovld vload3(size_t offset, const __private ulong *p); -float3 __ovld vload3(size_t offset, const __private float *p); -char4 __ovld vload4(size_t offset, const __private char *p); -uchar4 __ovld vload4(size_t offset, const __private uchar *p); -short4 __ovld vload4(size_t offset, const __private short *p); -ushort4 __ovld vload4(size_t offset, const __private ushort *p); -int4 __ovld vload4(size_t offset, const __private int *p); -uint4 __ovld vload4(size_t offset, const __private uint *p); -long4 __ovld vload4(size_t offset, const __private long *p); -ulong4 __ovld vload4(size_t offset, const __private ulong *p); -float4 __ovld vload4(size_t offset, const __private float *p); -char8 __ovld vload8(size_t offset, const __private char *p); -uchar8 __ovld vload8(size_t offset, const __private uchar *p); -short8 __ovld vload8(size_t offset, const __private short *p); -ushort8 __ovld vload8(size_t offset, const __private ushort *p); -int8 __ovld vload8(size_t offset, const __private int *p); -uint8 __ovld vload8(size_t offset, const __private uint *p); -long8 __ovld vload8(size_t offset, const __private long *p); -ulong8 __ovld vload8(size_t offset, const __private ulong *p); -float8 __ovld vload8(size_t offset, const __private float *p); -char16 __ovld vload16(size_t offset, const __private char *p); -uchar16 __ovld vload16(size_t offset, const __private uchar *p); -short16 __ovld vload16(size_t offset, const __private short *p); -ushort16 __ovld vload16(size_t offset, const __private ushort *p); -int16 __ovld vload16(size_t offset, const __private int *p); -uint16 __ovld vload16(size_t offset, const __private uint *p); -long16 __ovld vload16(size_t offset, const __private long *p); -ulong16 __ovld vload16(size_t offset, const __private ulong *p); -float16 __ovld vload16(size_t offset, const __private float *p); +char2 __ovld __purefn vload2(size_t offset, const __global char *p); +uchar2 __ovld __purefn vload2(size_t offset, const __global uchar *p); +short2 __ovld __purefn vload2(size_t offset, const __global short *p); +ushort2 __ovld __purefn vload2(size_t offset, const __global ushort *p); +int2 __ovld __purefn vload2(size_t offset, const __global int *p); +uint2 __ovld __purefn vload2(size_t offset, const __global uint *p); +long2 __ovld __purefn vload2(size_t offset, const __global long *p); +ulong2 __ovld __purefn vload2(size_t offset, const __global ulong *p); +float2 __ovld __purefn vload2(size_t offset, const __global float *p); +char3 __ovld __purefn vload3(size_t offset, const __global char *p); +uchar3 __ovld __purefn vload3(size_t offset, const __global uchar *p); +short3 __ovld __purefn vload3(size_t offset, const __global short *p); +ushort3 __ovld __purefn vload3(size_t offset, const __global ushort *p); +int3 __ovld __purefn vload3(size_t offset, const __global int *p); +uint3 __ovld __purefn vload3(size_t offset, const __global uint *p); +long3 __ovld __purefn vload3(size_t offset, const __global long *p); +ulong3 __ovld __purefn vload3(size_t offset, const __global ulong *p); +float3 __ovld __purefn vload3(size_t offset, const __global float *p); +char4 __ovld __purefn vload4(size_t offset, const __global char *p); +uchar4 __ovld __purefn vload4(size_t offset, const __global uchar *p); +short4 __ovld __purefn vload4(size_t offset, const __global short *p); +ushort4 __ovld __purefn vload4(size_t offset, const __global ushort *p); +int4 __ovld __purefn vload4(size_t offset, const __global int *p); +uint4 __ovld __purefn vload4(size_t offset, const __global uint *p); +long4 __ovld __purefn vload4(size_t offset, const __global long *p); +ulong4 __ovld __purefn vload4(size_t offset, const __global ulong *p); +float4 __ovld __purefn vload4(size_t offset, const __global float *p); +char8 __ovld __purefn vload8(size_t offset, const __global char *p); +uchar8 __ovld __purefn vload8(size_t offset, const __global uchar *p); +short8 __ovld __purefn vload8(size_t offset, const __global short *p); +ushort8 __ovld __purefn vload8(size_t offset, const __global ushort *p); +int8 __ovld __purefn vload8(size_t offset, const __global int *p); +uint8 __ovld __purefn vload8(size_t offset, const __global uint *p); +long8 __ovld __purefn vload8(size_t offset, const __global long *p); +ulong8 __ovld __purefn vload8(size_t offset, const __global ulong *p); +float8 __ovld __purefn vload8(size_t offset, const __global float *p); +char16 __ovld __purefn vload16(size_t offset, const __global char *p); +uchar16 __ovld __purefn vload16(size_t offset, const __global uchar *p); +short16 __ovld __purefn vload16(size_t offset, const __global short *p); +ushort16 __ovld __purefn vload16(size_t offset, const __global ushort *p); +int16 __ovld __purefn vload16(size_t offset, const __global int *p); +uint16 __ovld __purefn vload16(size_t offset, const __global uint *p); +long16 __ovld __purefn vload16(size_t offset, const __global long *p); +ulong16 __ovld __purefn vload16(size_t offset, const __global ulong *p); +float16 __ovld __purefn vload16(size_t offset, const __global float *p); +char2 __ovld __purefn vload2(size_t offset, const __local char *p); +uchar2 __ovld __purefn vload2(size_t offset, const __local uchar *p); +short2 __ovld __purefn vload2(size_t offset, const __local short *p); +ushort2 __ovld __purefn vload2(size_t offset, const __local ushort *p); +int2 __ovld __purefn vload2(size_t offset, const __local int *p); +uint2 __ovld __purefn vload2(size_t offset, const __local uint *p); +long2 __ovld __purefn vload2(size_t offset, const __local long *p); +ulong2 __ovld __purefn vload2(size_t offset, const __local ulong *p); +float2 __ovld __purefn vload2(size_t offset, const __local float *p); +char3 __ovld __purefn vload3(size_t offset, const __local char *p); +uchar3 __ovld __purefn vload3(size_t offset, const __local uchar *p); +short3 __ovld __purefn vload3(size_t offset, const __local short *p); +ushort3 __ovld __purefn vload3(size_t offset, const __local ushort *p); +int3 __ovld __purefn vload3(size_t offset, const __local int *p); +uint3 __ovld __purefn vload3(size_t offset, const __local uint *p); +long3 __ovld __purefn vload3(size_t offset, const __local long *p); +ulong3 __ovld __purefn vload3(size_t offset, const __local ulong *p); +float3 __ovld __purefn vload3(size_t offset, const __local float *p); +char4 __ovld __purefn vload4(size_t offset, const __local char *p); +uchar4 __ovld __purefn vload4(size_t offset, const __local uchar *p); +short4 __ovld __purefn vload4(size_t offset, const __local short *p); +ushort4 __ovld __purefn vload4(size_t offset, const __local ushort *p); +int4 __ovld __purefn vload4(size_t offset, const __local int *p); +uint4 __ovld __purefn vload4(size_t offset, const __local uint *p); +long4 __ovld __purefn vload4(size_t offset, const __local long *p); +ulong4 __ovld __purefn vload4(size_t offset, const __local ulong *p); +float4 __ovld __purefn vload4(size_t offset, const __local float *p); +char8 __ovld __purefn vload8(size_t offset, const __local char *p); +uchar8 __ovld __purefn vload8(size_t offset, const __local uchar *p); +short8 __ovld __purefn vload8(size_t offset, const __local short *p); +ushort8 __ovld __purefn vload8(size_t offset, const __local ushort *p); +int8 __ovld __purefn vload8(size_t offset, const __local int *p); +uint8 __ovld __purefn vload8(size_t offset, const __local uint *p); +long8 __ovld __purefn vload8(size_t offset, const __local long *p); +ulong8 __ovld __purefn vload8(size_t offset, const __local ulong *p); +float8 __ovld __purefn vload8(size_t offset, const __local float *p); +char16 __ovld __purefn vload16(size_t offset, const __local char *p); +uchar16 __ovld __purefn vload16(size_t offset, const __local uchar *p); +short16 __ovld __purefn vload16(size_t offset, const __local short *p); +ushort16 __ovld __purefn vload16(size_t offset, const __local ushort *p); +int16 __ovld __purefn vload16(size_t offset, const __local int *p); +uint16 __ovld __purefn vload16(size_t offset, const __local uint *p); +long16 __ovld __purefn vload16(size_t offset, const __local long *p); +ulong16 __ovld __purefn vload16(size_t offset, const __local ulong *p); +float16 __ovld __purefn vload16(size_t offset, const __local float *p); +char2 __ovld __purefn vload2(size_t offset, const __private char *p); +uchar2 __ovld __purefn vload2(size_t offset, const __private uchar *p); +short2 __ovld __purefn vload2(size_t offset, const __private short *p); +ushort2 __ovld __purefn vload2(size_t offset, const __private ushort *p); +int2 __ovld __purefn vload2(size_t offset, const __private int *p); +uint2 __ovld __purefn vload2(size_t offset, const __private uint *p); +long2 __ovld __purefn vload2(size_t offset, const __private long *p); +ulong2 __ovld __purefn vload2(size_t offset, const __private ulong *p); +float2 __ovld __purefn vload2(size_t offset, const __private float *p); +char3 __ovld __purefn vload3(size_t offset, const __private char *p); +uchar3 __ovld __purefn vload3(size_t offset, const __private uchar *p); +short3 __ovld __purefn vload3(size_t offset, const __private short *p); +ushort3 __ovld __purefn vload3(size_t offset, const __private ushort *p); +int3 __ovld __purefn vload3(size_t offset, const __private int *p); +uint3 __ovld __purefn vload3(size_t offset, const __private uint *p); +long3 __ovld __purefn vload3(size_t offset, const __private long *p); +ulong3 __ovld __purefn vload3(size_t offset, const __private ulong *p); +float3 __ovld __purefn vload3(size_t offset, const __private float *p); +char4 __ovld __purefn vload4(size_t offset, const __private char *p); +uchar4 __ovld __purefn vload4(size_t offset, const __private uchar *p); +short4 __ovld __purefn vload4(size_t offset, const __private short *p); +ushort4 __ovld __purefn vload4(size_t offset, const __private ushort *p); +int4 __ovld __purefn vload4(size_t offset, const __private int *p); +uint4 __ovld __purefn vload4(size_t offset, const __private uint *p); +long4 __ovld __purefn vload4(size_t offset, const __private long *p); +ulong4 __ovld __purefn vload4(size_t offset, const __private ulong *p); +float4 __ovld __purefn vload4(size_t offset, const __private float *p); +char8 __ovld __purefn vload8(size_t offset, const __private char *p); +uchar8 __ovld __purefn vload8(size_t offset, const __private uchar *p); +short8 __ovld __purefn vload8(size_t offset, const __private short *p); +ushort8 __ovld __purefn vload8(size_t offset, const __private ushort *p); +int8 __ovld __purefn vload8(size_t offset, const __private int *p); +uint8 __ovld __purefn vload8(size_t offset, const __private uint *p); +long8 __ovld __purefn vload8(size_t offset, const __private long *p); +ulong8 __ovld __purefn vload8(size_t offset, const __private ulong *p); +float8 __ovld __purefn vload8(size_t offset, const __private float *p); +char16 __ovld __purefn vload16(size_t offset, const __private char *p); +uchar16 __ovld __purefn vload16(size_t offset, const __private uchar *p); +short16 __ovld __purefn vload16(size_t offset, const __private short *p); +ushort16 __ovld __purefn vload16(size_t offset, const __private ushort *p); +int16 __ovld __purefn vload16(size_t offset, const __private int *p); +uint16 __ovld __purefn vload16(size_t offset, const __private uint *p); +long16 __ovld __purefn vload16(size_t offset, const __private long *p); +ulong16 __ovld __purefn vload16(size_t offset, const __private ulong *p); +float16 __ovld __purefn vload16(size_t offset, const __private float *p); #ifdef cl_khr_fp64 -double2 __ovld vload2(size_t offset, const __global double *p); -double3 __ovld vload3(size_t offset, const __global double *p); -double4 __ovld vload4(size_t offset, const __global double *p); -double8 __ovld vload8(size_t offset, const __global double *p); -double16 __ovld vload16(size_t offset, const __global double *p); -double2 __ovld vload2(size_t offset, const __local double *p); -double3 __ovld vload3(size_t offset, const __local double *p); -double4 __ovld vload4(size_t offset, const __local double *p); -double8 __ovld vload8(size_t offset, const __local double *p); -double16 __ovld vload16(size_t offset, const __local double *p); -double2 __ovld vload2(size_t offset, const __private double *p); -double3 __ovld vload3(size_t offset, const __private double *p); -double4 __ovld vload4(size_t offset, const __private double *p); -double8 __ovld vload8(size_t offset, const __private double *p); -double16 __ovld vload16(size_t offset, const __private double *p); +double2 __ovld __purefn vload2(size_t offset, const __global double *p); +double3 __ovld __purefn vload3(size_t offset, const __global double *p); +double4 __ovld __purefn vload4(size_t offset, const __global double *p); +double8 __ovld __purefn vload8(size_t offset, const __global double *p); +double16 __ovld __purefn vload16(size_t offset, const __global double *p); +double2 __ovld __purefn vload2(size_t offset, const __local double *p); +double3 __ovld __purefn vload3(size_t offset, const __local double *p); +double4 __ovld __purefn vload4(size_t offset, const __local double *p); +double8 __ovld __purefn vload8(size_t offset, const __local double *p); +double16 __ovld __purefn vload16(size_t offset, const __local double *p); +double2 __ovld __purefn vload2(size_t offset, const __private double *p); +double3 __ovld __purefn vload3(size_t offset, const __private double *p); +double4 __ovld __purefn vload4(size_t offset, const __private double *p); +double8 __ovld __purefn vload8(size_t offset, const __private double *p); +double16 __ovld __purefn vload16(size_t offset, const __private double *p); #endif //cl_khr_fp64 #ifdef cl_khr_fp16 -half __ovld vload(size_t offset, const __global half *p); -half2 __ovld vload2(size_t offset, const __global half *p); -half3 __ovld vload3(size_t offset, const __global half *p); -half4 __ovld vload4(size_t offset, const __global half *p); -half8 __ovld vload8(size_t offset, const __global half *p); -half16 __ovld vload16(size_t offset, const __global half *p); -half __ovld vload(size_t offset, const __local half *p); -half2 __ovld vload2(size_t offset, const __local half *p); -half3 __ovld vload3(size_t offset, const __local half *p); -half4 __ovld vload4(size_t offset, const __local half *p); -half8 __ovld vload8(size_t offset, const __local half *p); -half16 __ovld vload16(size_t offset, const __local half *p); -half __ovld vload(size_t offset, const __private half *p); -half2 __ovld vload2(size_t offset, const __private half *p); -half3 __ovld vload3(size_t offset, const __private half *p); -half4 __ovld vload4(size_t offset, const __private half *p); -half8 __ovld vload8(size_t offset, const __private half *p); -half16 __ovld vload16(size_t offset, const __private half *p); +half __ovld __purefn vload(size_t offset, const __global half *p); +half2 __ovld __purefn vload2(size_t offset, const __global half *p); +half3 __ovld __purefn vload3(size_t offset, const __global half *p); +half4 __ovld __purefn vload4(size_t offset, const __global half *p); +half8 __ovld __purefn vload8(size_t offset, const __global half *p); +half16 __ovld __purefn vload16(size_t offset, const __global half *p); +half __ovld __purefn vload(size_t offset, const __local half *p); +half2 __ovld __purefn vload2(size_t offset, const __local half *p); +half3 __ovld __purefn vload3(size_t offset, const __local half *p); +half4 __ovld __purefn vload4(size_t offset, const __local half *p); +half8 __ovld __purefn vload8(size_t offset, const __local half *p); +half16 __ovld __purefn vload16(size_t offset, const __local half *p); +half __ovld __purefn vload(size_t offset, const __private half *p); +half2 __ovld __purefn vload2(size_t offset, const __private half *p); +half3 __ovld __purefn vload3(size_t offset, const __private half *p); +half4 __ovld __purefn vload4(size_t offset, const __private half *p); +half8 __ovld __purefn vload8(size_t offset, const __private half *p); +half16 __ovld __purefn vload16(size_t offset, const __private half *p); #endif //cl_khr_fp16 #endif //defined(__opencl_c_generic_address_space) @@ -11733,13 +11733,13 @@ * The read address computed as (p + offset) * must be 16-bit aligned. */ -float __ovld vload_half(size_t offset, const __constant half *p); +float __ovld __cnfn vload_half(size_t offset, const __constant half *p); #if defined(__opencl_c_generic_address_space) -float __ovld vload_half(size_t offset, const half *p); +float __ovld __purefn vload_half(size_t offset, const half *p); #else -float __ovld vload_half(size_t offset, const __global half *p); -float __ovld vload_half(size_t offset, const __local half *p); -float __ovld vload_half(size_t offset, const __private half *p); +float __ovld __purefn vload_half(size_t offset, const __global half *p); +float __ovld __purefn vload_half(size_t offset, const __local half *p); +float __ovld __purefn vload_half(size_t offset, const __private half *p); #endif //defined(__opencl_c_generic_address_space) /** @@ -11750,33 +11750,33 @@ * value is returned. The read address computed * as (p + (offset * n)) must be 16-bit aligned. */ -float2 __ovld vload_half2(size_t offset, const __constant half *p); -float3 __ovld vload_half3(size_t offset, const __constant half *p); -float4 __ovld vload_half4(size_t offset, const __constant half *p); -float8 __ovld vload_half8(size_t offset, const __constant half *p); -float16 __ovld vload_half16(size_t offset, const __constant half *p); +float2 __ovld __cnfn vload_half2(size_t offset, const __constant half *p); +float3 __ovld __cnfn vload_half3(size_t offset, const __constant half *p); +float4 __ovld __cnfn vload_half4(size_t offset, const __constant half *p); +float8 __ovld __cnfn vload_half8(size_t offset, const __constant half *p); +float16 __ovld __cnfn vload_half16(size_t offset, const __constant half *p); #if defined(__opencl_c_generic_address_space) -float2 __ovld vload_half2(size_t offset, const half *p); -float3 __ovld vload_half3(size_t offset, const half *p); -float4 __ovld vload_half4(size_t offset, const half *p); -float8 __ovld vload_half8(size_t offset, const half *p); -float16 __ovld vload_half16(size_t offset, const half *p); +float2 __ovld __purefn vload_half2(size_t offset, const half *p); +float3 __ovld __purefn vload_half3(size_t offset, const half *p); +float4 __ovld __purefn vload_half4(size_t offset, const half *p); +float8 __ovld __purefn vload_half8(size_t offset, const half *p); +float16 __ovld __purefn vload_half16(size_t offset, const half *p); #else -float2 __ovld vload_half2(size_t offset, const __global half *p); -float3 __ovld vload_half3(size_t offset, const __global half *p); -float4 __ovld vload_half4(size_t offset, const __global half *p); -float8 __ovld vload_half8(size_t offset, const __global half *p); -float16 __ovld vload_half16(size_t offset, const __global half *p); -float2 __ovld vload_half2(size_t offset, const __local half *p); -float3 __ovld vload_half3(size_t offset, const __local half *p); -float4 __ovld vload_half4(size_t offset, const __local half *p); -float8 __ovld vload_half8(size_t offset, const __local half *p); -float16 __ovld vload_half16(size_t offset, const __local half *p); -float2 __ovld vload_half2(size_t offset, const __private half *p); -float3 __ovld vload_half3(size_t offset, const __private half *p); -float4 __ovld vload_half4(size_t offset, const __private half *p); -float8 __ovld vload_half8(size_t offset, const __private half *p); -float16 __ovld vload_half16(size_t offset, const __private half *p); +float2 __ovld __purefn vload_half2(size_t offset, const __global half *p); +float3 __ovld __purefn vload_half3(size_t offset, const __global half *p); +float4 __ovld __purefn vload_half4(size_t offset, const __global half *p); +float8 __ovld __purefn vload_half8(size_t offset, const __global half *p); +float16 __ovld __purefn vload_half16(size_t offset, const __global half *p); +float2 __ovld __purefn vload_half2(size_t offset, const __local half *p); +float3 __ovld __purefn vload_half3(size_t offset, const __local half *p); +float4 __ovld __purefn vload_half4(size_t offset, const __local half *p); +float8 __ovld __purefn vload_half8(size_t offset, const __local half *p); +float16 __ovld __purefn vload_half16(size_t offset, const __local half *p); +float2 __ovld __purefn vload_half2(size_t offset, const __private half *p); +float3 __ovld __purefn vload_half3(size_t offset, const __private half *p); +float4 __ovld __purefn vload_half4(size_t offset, const __private half *p); +float8 __ovld __purefn vload_half8(size_t offset, const __private half *p); +float16 __ovld __purefn vload_half16(size_t offset, const __private half *p); #endif //defined(__opencl_c_generic_address_space) /** @@ -12070,33 +12070,33 @@ * The address computed as (p + (offset * 4)) * must be aligned to sizeof (half) * 4 bytes. */ -float2 __ovld vloada_half2(size_t offset, const __constant half *p); -float3 __ovld vloada_half3(size_t offset, const __constant half *p); -float4 __ovld vloada_half4(size_t offset, const __constant half *p); -float8 __ovld vloada_half8(size_t offset, const __constant half *p); -float16 __ovld vloada_half16(size_t offset, const __constant half *p); +float2 __ovld __cnfn vloada_half2(size_t offset, const __constant half *p); +float3 __ovld __cnfn vloada_half3(size_t offset, const __constant half *p); +float4 __ovld __cnfn vloada_half4(size_t offset, const __constant half *p); +float8 __ovld __cnfn vloada_half8(size_t offset, const __constant half *p); +float16 __ovld __cnfn vloada_half16(size_t offset, const __constant half *p); #if defined(__opencl_c_generic_address_space) -float2 __ovld vloada_half2(size_t offset, const half *p); -float3 __ovld vloada_half3(size_t offset, const half *p); -float4 __ovld vloada_half4(size_t offset, const half *p); -float8 __ovld vloada_half8(size_t offset, const half *p); -float16 __ovld vloada_half16(size_t offset, const half *p); +float2 __ovld __purefn vloada_half2(size_t offset, const half *p); +float3 __ovld __purefn vloada_half3(size_t offset, const half *p); +float4 __ovld __purefn vloada_half4(size_t offset, const half *p); +float8 __ovld __purefn vloada_half8(size_t offset, const half *p); +float16 __ovld __purefn vloada_half16(size_t offset, const half *p); #else -float2 __ovld vloada_half2(size_t offset, const __global half *p); -float3 __ovld vloada_half3(size_t offset, const __global half *p); -float4 __ovld vloada_half4(size_t offset, const __global half *p); -float8 __ovld vloada_half8(size_t offset, const __global half *p); -float16 __ovld vloada_half16(size_t offset, const __global half *p); -float2 __ovld vloada_half2(size_t offset, const __local half *p); -float3 __ovld vloada_half3(size_t offset, const __local half *p); -float4 __ovld vloada_half4(size_t offset, const __local half *p); -float8 __ovld vloada_half8(size_t offset, const __local half *p); -float16 __ovld vloada_half16(size_t offset, const __local half *p); -float2 __ovld vloada_half2(size_t offset, const __private half *p); -float3 __ovld vloada_half3(size_t offset, const __private half *p); -float4 __ovld vloada_half4(size_t offset, const __private half *p); -float8 __ovld vloada_half8(size_t offset, const __private half *p); -float16 __ovld vloada_half16(size_t offset, const __private half *p); +float2 __ovld __purefn vloada_half2(size_t offset, const __global half *p); +float3 __ovld __purefn vloada_half3(size_t offset, const __global half *p); +float4 __ovld __purefn vloada_half4(size_t offset, const __global half *p); +float8 __ovld __purefn vloada_half8(size_t offset, const __global half *p); +float16 __ovld __purefn vloada_half16(size_t offset, const __global half *p); +float2 __ovld __purefn vloada_half2(size_t offset, const __local half *p); +float3 __ovld __purefn vloada_half3(size_t offset, const __local half *p); +float4 __ovld __purefn vloada_half4(size_t offset, const __local half *p); +float8 __ovld __purefn vloada_half8(size_t offset, const __local half *p); +float16 __ovld __purefn vloada_half16(size_t offset, const __local half *p); +float2 __ovld __purefn vloada_half2(size_t offset, const __private half *p); +float3 __ovld __purefn vloada_half3(size_t offset, const __private half *p); +float4 __ovld __purefn vloada_half4(size_t offset, const __private half *p); +float8 __ovld __purefn vloada_half8(size_t offset, const __private half *p); +float16 __ovld __purefn vloada_half16(size_t offset, const __private half *p); #endif //defined(__opencl_c_generic_address_space) /**
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits