[OpenCL] Implement as_type operator as alias of __builtin_astype.

Reviewers: Anastasia

Reviewed By: Anastasia

Subscribers: cfe-commits, yaxunl, bader

Differential Revision: https://reviews.llvm.org/D28136

llvm-svn: 297947
This commit is contained in:
Egor Churaev 2017-03-16 12:15:10 +00:00
parent a0b1e2c3d8
commit 60c30ae1f1
2 changed files with 71 additions and 762 deletions

View File

@ -6584,777 +6584,85 @@ half16 __ovld __cnfn convert_half16_rtz(double16);
* OpenCL v1.1/1.2/2.0 s6.2.4.2 - as_type operators
* Reinterprets a data type as another data type of the same size
*/
char __ovld __cnfn as_char(char);
char __ovld __cnfn as_char(uchar);
#define as_char(x) __builtin_astype((x), char)
#define as_char2(x) __builtin_astype((x), char2)
#define as_char3(x) __builtin_astype((x), char3)
#define as_char4(x) __builtin_astype((x), char4)
#define as_char8(x) __builtin_astype((x), char8)
#define as_char16(x) __builtin_astype((x), char16)
char2 __ovld __cnfn as_char2(char2);
char2 __ovld __cnfn as_char2(uchar2);
char2 __ovld __cnfn as_char2(short);
char2 __ovld __cnfn as_char2(ushort);
#define as_uchar(x) __builtin_astype((x), uchar)
#define as_uchar2(x) __builtin_astype((x), uchar2)
#define as_uchar3(x) __builtin_astype((x), uchar3)
#define as_uchar4(x) __builtin_astype((x), uchar4)
#define as_uchar8(x) __builtin_astype((x), uchar8)
#define as_uchar16(x) __builtin_astype((x), uchar16)
char3 __ovld __cnfn as_char3(char3);
char3 __ovld __cnfn as_char3(char4);
char3 __ovld __cnfn as_char3(uchar3);
char3 __ovld __cnfn as_char3(uchar4);
char3 __ovld __cnfn as_char3(short2);
char3 __ovld __cnfn as_char3(ushort2);
char3 __ovld __cnfn as_char3(int);
char3 __ovld __cnfn as_char3(uint);
char3 __ovld __cnfn as_char3(float);
#define as_short(x) __builtin_astype((x), short)
#define as_short2(x) __builtin_astype((x), short2)
#define as_short3(x) __builtin_astype((x), short3)
#define as_short4(x) __builtin_astype((x), short4)
#define as_short8(x) __builtin_astype((x), short8)
#define as_short16(x) __builtin_astype((x), short16)
char4 __ovld __cnfn as_char4(char3);
char4 __ovld __cnfn as_char4(char4);
char4 __ovld __cnfn as_char4(uchar3);
char4 __ovld __cnfn as_char4(uchar4);
char4 __ovld __cnfn as_char4(short2);
char4 __ovld __cnfn as_char4(ushort2);
char4 __ovld __cnfn as_char4(int);
char4 __ovld __cnfn as_char4(uint);
char4 __ovld __cnfn as_char4(float);
#define as_ushort(x) __builtin_astype((x), ushort)
#define as_ushort2(x) __builtin_astype((x), ushort2)
#define as_ushort3(x) __builtin_astype((x), ushort3)
#define as_ushort4(x) __builtin_astype((x), ushort4)
#define as_ushort8(x) __builtin_astype((x), ushort8)
#define as_ushort16(x) __builtin_astype((x), ushort16)
char8 __ovld __cnfn as_char8(char8);
char8 __ovld __cnfn as_char8(uchar8);
char8 __ovld __cnfn as_char8(short3);
char8 __ovld __cnfn as_char8(short4);
char8 __ovld __cnfn as_char8(ushort3);
char8 __ovld __cnfn as_char8(ushort4);
char8 __ovld __cnfn as_char8(int2);
char8 __ovld __cnfn as_char8(uint2);
char8 __ovld __cnfn as_char8(long);
char8 __ovld __cnfn as_char8(ulong);
char8 __ovld __cnfn as_char8(float2);
#define as_int(x) __builtin_astype((x), int)
#define as_int2(x) __builtin_astype((x), int2)
#define as_int3(x) __builtin_astype((x), int3)
#define as_int4(x) __builtin_astype((x), int4)
#define as_int8(x) __builtin_astype((x), int8)
#define as_int16(x) __builtin_astype((x), int16)
char16 __ovld __cnfn as_char16(char16);
char16 __ovld __cnfn as_char16(uchar16);
char16 __ovld __cnfn as_char16(short8);
char16 __ovld __cnfn as_char16(ushort8);
char16 __ovld __cnfn as_char16(int3);
char16 __ovld __cnfn as_char16(int4);
char16 __ovld __cnfn as_char16(uint3);
char16 __ovld __cnfn as_char16(uint4);
char16 __ovld __cnfn as_char16(long2);
char16 __ovld __cnfn as_char16(ulong2);
char16 __ovld __cnfn as_char16(float3);
char16 __ovld __cnfn as_char16(float4);
#define as_uint(x) __builtin_astype((x), uint)
#define as_uint2(x) __builtin_astype((x), uint2)
#define as_uint3(x) __builtin_astype((x), uint3)
#define as_uint4(x) __builtin_astype((x), uint4)
#define as_uint8(x) __builtin_astype((x), uint8)
#define as_uint16(x) __builtin_astype((x), uint16)
uchar __ovld __cnfn as_uchar(char);
uchar __ovld __cnfn as_uchar(uchar);
#define as_long(x) __builtin_astype((x), long)
#define as_long2(x) __builtin_astype((x), long2)
#define as_long3(x) __builtin_astype((x), long3)
#define as_long4(x) __builtin_astype((x), long4)
#define as_long8(x) __builtin_astype((x), long8)
#define as_long16(x) __builtin_astype((x), long16)
uchar2 __ovld __cnfn as_uchar2(char2);
uchar2 __ovld __cnfn as_uchar2(uchar2);
uchar2 __ovld __cnfn as_uchar2(short);
uchar2 __ovld __cnfn as_uchar2(ushort);
#define as_ulong(x) __builtin_astype((x), ulong)
#define as_ulong2(x) __builtin_astype((x), ulong2)
#define as_ulong3(x) __builtin_astype((x), ulong3)
#define as_ulong4(x) __builtin_astype((x), ulong4)
#define as_ulong8(x) __builtin_astype((x), ulong8)
#define as_ulong16(x) __builtin_astype((x), ulong16)
uchar3 __ovld __cnfn as_uchar3(char3);
uchar3 __ovld __cnfn as_uchar3(char4);
uchar3 __ovld __cnfn as_uchar3(uchar3);
uchar3 __ovld __cnfn as_uchar3(uchar4);
uchar3 __ovld __cnfn as_uchar3(short2);
uchar3 __ovld __cnfn as_uchar3(ushort2);
uchar3 __ovld __cnfn as_uchar3(int);
uchar3 __ovld __cnfn as_uchar3(uint);
uchar3 __ovld __cnfn as_uchar3(float);
uchar4 __ovld __cnfn as_uchar4(char3);
uchar4 __ovld __cnfn as_uchar4(char4);
uchar4 __ovld __cnfn as_uchar4(uchar3);
uchar4 __ovld __cnfn as_uchar4(uchar4);
uchar4 __ovld __cnfn as_uchar4(short2);
uchar4 __ovld __cnfn as_uchar4(ushort2);
uchar4 __ovld __cnfn as_uchar4(int);
uchar4 __ovld __cnfn as_uchar4(uint);
uchar4 __ovld __cnfn as_uchar4(float);
uchar8 __ovld __cnfn as_uchar8(char8);
uchar8 __ovld __cnfn as_uchar8(uchar8);
uchar8 __ovld __cnfn as_uchar8(short3);
uchar8 __ovld __cnfn as_uchar8(short4);
uchar8 __ovld __cnfn as_uchar8(ushort3);
uchar8 __ovld __cnfn as_uchar8(ushort4);
uchar8 __ovld __cnfn as_uchar8(int2);
uchar8 __ovld __cnfn as_uchar8(uint2);
uchar8 __ovld __cnfn as_uchar8(long);
uchar8 __ovld __cnfn as_uchar8(ulong);
uchar8 __ovld __cnfn as_uchar8(float2);
uchar16 __ovld __cnfn as_uchar16(char16);
uchar16 __ovld __cnfn as_uchar16(uchar16);
uchar16 __ovld __cnfn as_uchar16(short8);
uchar16 __ovld __cnfn as_uchar16(ushort8);
uchar16 __ovld __cnfn as_uchar16(int3);
uchar16 __ovld __cnfn as_uchar16(int4);
uchar16 __ovld __cnfn as_uchar16(uint3);
uchar16 __ovld __cnfn as_uchar16(uint4);
uchar16 __ovld __cnfn as_uchar16(long2);
uchar16 __ovld __cnfn as_uchar16(ulong2);
uchar16 __ovld __cnfn as_uchar16(float3);
uchar16 __ovld __cnfn as_uchar16(float4);
short __ovld __cnfn as_short(char2);
short __ovld __cnfn as_short(uchar2);
short __ovld __cnfn as_short(short);
short __ovld __cnfn as_short(ushort);
short2 __ovld __cnfn as_short2(char3);
short2 __ovld __cnfn as_short2(char4);
short2 __ovld __cnfn as_short2(uchar3);
short2 __ovld __cnfn as_short2(uchar4);
short2 __ovld __cnfn as_short2(short2);
short2 __ovld __cnfn as_short2(ushort2);
short2 __ovld __cnfn as_short2(int);
short2 __ovld __cnfn as_short2(uint);
short2 __ovld __cnfn as_short2(float);
short3 __ovld __cnfn as_short3(char8);
short3 __ovld __cnfn as_short3(uchar8);
short3 __ovld __cnfn as_short3(short3);
short3 __ovld __cnfn as_short3(short4);
short3 __ovld __cnfn as_short3(ushort3);
short3 __ovld __cnfn as_short3(ushort4);
short3 __ovld __cnfn as_short3(int2);
short3 __ovld __cnfn as_short3(uint2);
short3 __ovld __cnfn as_short3(long);
short3 __ovld __cnfn as_short3(ulong);
short3 __ovld __cnfn as_short3(float2);
short4 __ovld __cnfn as_short4(char8);
short4 __ovld __cnfn as_short4(uchar8);
short4 __ovld __cnfn as_short4(short3);
short4 __ovld __cnfn as_short4(short4);
short4 __ovld __cnfn as_short4(ushort3);
short4 __ovld __cnfn as_short4(ushort4);
short4 __ovld __cnfn as_short4(int2);
short4 __ovld __cnfn as_short4(uint2);
short4 __ovld __cnfn as_short4(long);
short4 __ovld __cnfn as_short4(ulong);
short4 __ovld __cnfn as_short4(float2);
short8 __ovld __cnfn as_short8(char16);
short8 __ovld __cnfn as_short8(uchar16);
short8 __ovld __cnfn as_short8(short8);
short8 __ovld __cnfn as_short8(ushort8);
short8 __ovld __cnfn as_short8(int3);
short8 __ovld __cnfn as_short8(int4);
short8 __ovld __cnfn as_short8(uint3);
short8 __ovld __cnfn as_short8(uint4);
short8 __ovld __cnfn as_short8(long2);
short8 __ovld __cnfn as_short8(ulong2);
short8 __ovld __cnfn as_short8(float3);
short8 __ovld __cnfn as_short8(float4);
short16 __ovld __cnfn as_short16(short16);
short16 __ovld __cnfn as_short16(ushort16);
short16 __ovld __cnfn as_short16(int8);
short16 __ovld __cnfn as_short16(uint8);
short16 __ovld __cnfn as_short16(long3);
short16 __ovld __cnfn as_short16(long4);
short16 __ovld __cnfn as_short16(ulong3);
short16 __ovld __cnfn as_short16(ulong4);
short16 __ovld __cnfn as_short16(float8);
ushort __ovld __cnfn as_ushort(char2);
ushort __ovld __cnfn as_ushort(uchar2);
ushort __ovld __cnfn as_ushort(short);
ushort __ovld __cnfn as_ushort(ushort);
ushort2 __ovld __cnfn as_ushort2(char3);
ushort2 __ovld __cnfn as_ushort2(char4);
ushort2 __ovld __cnfn as_ushort2(uchar3);
ushort2 __ovld __cnfn as_ushort2(uchar4);
ushort2 __ovld __cnfn as_ushort2(short2);
ushort2 __ovld __cnfn as_ushort2(ushort2);
ushort2 __ovld __cnfn as_ushort2(int);
ushort2 __ovld __cnfn as_ushort2(uint);
ushort2 __ovld __cnfn as_ushort2(float);
ushort3 __ovld __cnfn as_ushort3(char8);
ushort3 __ovld __cnfn as_ushort3(uchar8);
ushort3 __ovld __cnfn as_ushort3(short3);
ushort3 __ovld __cnfn as_ushort3(short4);
ushort3 __ovld __cnfn as_ushort3(ushort3);
ushort3 __ovld __cnfn as_ushort3(ushort4);
ushort3 __ovld __cnfn as_ushort3(int2);
ushort3 __ovld __cnfn as_ushort3(uint2);
ushort3 __ovld __cnfn as_ushort3(long);
ushort3 __ovld __cnfn as_ushort3(ulong);
ushort3 __ovld __cnfn as_ushort3(float2);
ushort4 __ovld __cnfn as_ushort4(char8);
ushort4 __ovld __cnfn as_ushort4(uchar8);
ushort4 __ovld __cnfn as_ushort4(short3);
ushort4 __ovld __cnfn as_ushort4(short4);
ushort4 __ovld __cnfn as_ushort4(ushort3);
ushort4 __ovld __cnfn as_ushort4(ushort4);
ushort4 __ovld __cnfn as_ushort4(int2);
ushort4 __ovld __cnfn as_ushort4(uint2);
ushort4 __ovld __cnfn as_ushort4(long);
ushort4 __ovld __cnfn as_ushort4(ulong);
ushort4 __ovld __cnfn as_ushort4(float2);
ushort8 __ovld __cnfn as_ushort8(char16);
ushort8 __ovld __cnfn as_ushort8(uchar16);
ushort8 __ovld __cnfn as_ushort8(short8);
ushort8 __ovld __cnfn as_ushort8(ushort8);
ushort8 __ovld __cnfn as_ushort8(int3);
ushort8 __ovld __cnfn as_ushort8(int4);
ushort8 __ovld __cnfn as_ushort8(uint3);
ushort8 __ovld __cnfn as_ushort8(uint4);
ushort8 __ovld __cnfn as_ushort8(long2);
ushort8 __ovld __cnfn as_ushort8(ulong2);
ushort8 __ovld __cnfn as_ushort8(float3);
ushort8 __ovld __cnfn as_ushort8(float4);
ushort16 __ovld __cnfn as_ushort16(short16);
ushort16 __ovld __cnfn as_ushort16(ushort16);
ushort16 __ovld __cnfn as_ushort16(int8);
ushort16 __ovld __cnfn as_ushort16(uint8);
ushort16 __ovld __cnfn as_ushort16(long3);
ushort16 __ovld __cnfn as_ushort16(long4);
ushort16 __ovld __cnfn as_ushort16(ulong3);
ushort16 __ovld __cnfn as_ushort16(ulong4);
ushort16 __ovld __cnfn as_ushort16(float8);
int __ovld __cnfn as_int(char3);
int __ovld __cnfn as_int(char4);
int __ovld __cnfn as_int(uchar3);
int __ovld __cnfn as_int(uchar4);
int __ovld __cnfn as_int(short2);
int __ovld __cnfn as_int(ushort2);
int __ovld __cnfn as_int(int);
int __ovld __cnfn as_int(uint);
int __ovld __cnfn as_int(float);
int2 __ovld __cnfn as_int2(char8);
int2 __ovld __cnfn as_int2(uchar8);
int2 __ovld __cnfn as_int2(short3);
int2 __ovld __cnfn as_int2(short4);
int2 __ovld __cnfn as_int2(ushort3);
int2 __ovld __cnfn as_int2(ushort4);
int2 __ovld __cnfn as_int2(int2);
int2 __ovld __cnfn as_int2(uint2);
int2 __ovld __cnfn as_int2(long);
int2 __ovld __cnfn as_int2(ulong);
int2 __ovld __cnfn as_int2(float2);
int3 __ovld __cnfn as_int3(char16);
int3 __ovld __cnfn as_int3(uchar16);
int3 __ovld __cnfn as_int3(short8);
int3 __ovld __cnfn as_int3(ushort8);
int3 __ovld __cnfn as_int3(int3);
int3 __ovld __cnfn as_int3(int4);
int3 __ovld __cnfn as_int3(uint3);
int3 __ovld __cnfn as_int3(uint4);
int3 __ovld __cnfn as_int3(long2);
int3 __ovld __cnfn as_int3(ulong2);
int3 __ovld __cnfn as_int3(float3);
int3 __ovld __cnfn as_int3(float4);
int4 __ovld __cnfn as_int4(char16);
int4 __ovld __cnfn as_int4(uchar16);
int4 __ovld __cnfn as_int4(short8);
int4 __ovld __cnfn as_int4(ushort8);
int4 __ovld __cnfn as_int4(int3);
int4 __ovld __cnfn as_int4(int4);
int4 __ovld __cnfn as_int4(uint3);
int4 __ovld __cnfn as_int4(uint4);
int4 __ovld __cnfn as_int4(long2);
int4 __ovld __cnfn as_int4(ulong2);
int4 __ovld __cnfn as_int4(float3);
int4 __ovld __cnfn as_int4(float4);
int8 __ovld __cnfn as_int8(short16);
int8 __ovld __cnfn as_int8(ushort16);
int8 __ovld __cnfn as_int8(int8);
int8 __ovld __cnfn as_int8(uint8);
int8 __ovld __cnfn as_int8(long3);
int8 __ovld __cnfn as_int8(long4);
int8 __ovld __cnfn as_int8(ulong3);
int8 __ovld __cnfn as_int8(ulong4);
int8 __ovld __cnfn as_int8(float8);
int16 __ovld __cnfn as_int16(int16);
int16 __ovld __cnfn as_int16(uint16);
int16 __ovld __cnfn as_int16(long8);
int16 __ovld __cnfn as_int16(ulong8);
int16 __ovld __cnfn as_int16(float16);
uint __ovld __cnfn as_uint(char3);
uint __ovld __cnfn as_uint(char4);
uint __ovld __cnfn as_uint(uchar3);
uint __ovld __cnfn as_uint(uchar4);
uint __ovld __cnfn as_uint(short2);
uint __ovld __cnfn as_uint(ushort2);
uint __ovld __cnfn as_uint(int);
uint __ovld __cnfn as_uint(uint);
uint __ovld __cnfn as_uint(float);
uint2 __ovld __cnfn as_uint2(char8);
uint2 __ovld __cnfn as_uint2(uchar8);
uint2 __ovld __cnfn as_uint2(short3);
uint2 __ovld __cnfn as_uint2(short4);
uint2 __ovld __cnfn as_uint2(ushort3);
uint2 __ovld __cnfn as_uint2(ushort4);
uint2 __ovld __cnfn as_uint2(int2);
uint2 __ovld __cnfn as_uint2(uint2);
uint2 __ovld __cnfn as_uint2(long);
uint2 __ovld __cnfn as_uint2(ulong);
uint2 __ovld __cnfn as_uint2(float2);
uint3 __ovld __cnfn as_uint3(char16);
uint3 __ovld __cnfn as_uint3(uchar16);
uint3 __ovld __cnfn as_uint3(short8);
uint3 __ovld __cnfn as_uint3(ushort8);
uint3 __ovld __cnfn as_uint3(int3);
uint3 __ovld __cnfn as_uint3(int4);
uint3 __ovld __cnfn as_uint3(uint3);
uint3 __ovld __cnfn as_uint3(uint4);
uint3 __ovld __cnfn as_uint3(long2);
uint3 __ovld __cnfn as_uint3(ulong2);
uint3 __ovld __cnfn as_uint3(float3);
uint3 __ovld __cnfn as_uint3(float4);
uint4 __ovld __cnfn as_uint4(char16);
uint4 __ovld __cnfn as_uint4(uchar16);
uint4 __ovld __cnfn as_uint4(short8);
uint4 __ovld __cnfn as_uint4(ushort8);
uint4 __ovld __cnfn as_uint4(int3);
uint4 __ovld __cnfn as_uint4(int4);
uint4 __ovld __cnfn as_uint4(uint3);
uint4 __ovld __cnfn as_uint4(uint4);
uint4 __ovld __cnfn as_uint4(long2);
uint4 __ovld __cnfn as_uint4(ulong2);
uint4 __ovld __cnfn as_uint4(float3);
uint4 __ovld __cnfn as_uint4(float4);
uint8 __ovld __cnfn as_uint8(short16);
uint8 __ovld __cnfn as_uint8(ushort16);
uint8 __ovld __cnfn as_uint8(int8);
uint8 __ovld __cnfn as_uint8(uint8);
uint8 __ovld __cnfn as_uint8(long3);
uint8 __ovld __cnfn as_uint8(long4);
uint8 __ovld __cnfn as_uint8(ulong3);
uint8 __ovld __cnfn as_uint8(ulong4);
uint8 __ovld __cnfn as_uint8(float8);
uint16 __ovld __cnfn as_uint16(int16);
uint16 __ovld __cnfn as_uint16(uint16);
uint16 __ovld __cnfn as_uint16(long8);
uint16 __ovld __cnfn as_uint16(ulong8);
uint16 __ovld __cnfn as_uint16(float16);
long __ovld __cnfn as_long(char8);
long __ovld __cnfn as_long(uchar8);
long __ovld __cnfn as_long(short3);
long __ovld __cnfn as_long(short4);
long __ovld __cnfn as_long(ushort3);
long __ovld __cnfn as_long(ushort4);
long __ovld __cnfn as_long(int2);
long __ovld __cnfn as_long(uint2);
long __ovld __cnfn as_long(long);
long __ovld __cnfn as_long(ulong);
long __ovld __cnfn as_long(float2);
long2 __ovld __cnfn as_long2(char16);
long2 __ovld __cnfn as_long2(uchar16);
long2 __ovld __cnfn as_long2(short8);
long2 __ovld __cnfn as_long2(ushort8);
long2 __ovld __cnfn as_long2(int3);
long2 __ovld __cnfn as_long2(int4);
long2 __ovld __cnfn as_long2(uint3);
long2 __ovld __cnfn as_long2(uint4);
long2 __ovld __cnfn as_long2(long2);
long2 __ovld __cnfn as_long2(ulong2);
long2 __ovld __cnfn as_long2(float3);
long2 __ovld __cnfn as_long2(float4);
long3 __ovld __cnfn as_long3(short16);
long3 __ovld __cnfn as_long3(ushort16);
long3 __ovld __cnfn as_long3(int8);
long3 __ovld __cnfn as_long3(uint8);
long3 __ovld __cnfn as_long3(long3);
long3 __ovld __cnfn as_long3(long4);
long3 __ovld __cnfn as_long3(ulong3);
long3 __ovld __cnfn as_long3(ulong4);
long3 __ovld __cnfn as_long3(float8);
long4 __ovld __cnfn as_long4(short16);
long4 __ovld __cnfn as_long4(ushort16);
long4 __ovld __cnfn as_long4(int8);
long4 __ovld __cnfn as_long4(uint8);
long4 __ovld __cnfn as_long4(long3);
long4 __ovld __cnfn as_long4(long4);
long4 __ovld __cnfn as_long4(ulong3);
long4 __ovld __cnfn as_long4(ulong4);
long4 __ovld __cnfn as_long4(float8);
long8 __ovld __cnfn as_long8(int16);
long8 __ovld __cnfn as_long8(uint16);
long8 __ovld __cnfn as_long8(long8);
long8 __ovld __cnfn as_long8(ulong8);
long8 __ovld __cnfn as_long8(float16);
long16 __ovld __cnfn as_long16(long16);
long16 __ovld __cnfn as_long16(ulong16);
ulong __ovld __cnfn as_ulong(char8);
ulong __ovld __cnfn as_ulong(uchar8);
ulong __ovld __cnfn as_ulong(short3);
ulong __ovld __cnfn as_ulong(short4);
ulong __ovld __cnfn as_ulong(ushort3);
ulong __ovld __cnfn as_ulong(ushort4);
ulong __ovld __cnfn as_ulong(int2);
ulong __ovld __cnfn as_ulong(uint2);
ulong __ovld __cnfn as_ulong(long);
ulong __ovld __cnfn as_ulong(ulong);
ulong __ovld __cnfn as_ulong(float2);
ulong2 __ovld __cnfn as_ulong2(char16);
ulong2 __ovld __cnfn as_ulong2(uchar16);
ulong2 __ovld __cnfn as_ulong2(short8);
ulong2 __ovld __cnfn as_ulong2(ushort8);
ulong2 __ovld __cnfn as_ulong2(int3);
ulong2 __ovld __cnfn as_ulong2(int4);
ulong2 __ovld __cnfn as_ulong2(uint3);
ulong2 __ovld __cnfn as_ulong2(uint4);
ulong2 __ovld __cnfn as_ulong2(long2);
ulong2 __ovld __cnfn as_ulong2(ulong2);
ulong2 __ovld __cnfn as_ulong2(float3);
ulong2 __ovld __cnfn as_ulong2(float4);
ulong3 __ovld __cnfn as_ulong3(short16);
ulong3 __ovld __cnfn as_ulong3(ushort16);
ulong3 __ovld __cnfn as_ulong3(int8);
ulong3 __ovld __cnfn as_ulong3(uint8);
ulong3 __ovld __cnfn as_ulong3(long3);
ulong3 __ovld __cnfn as_ulong3(long4);
ulong3 __ovld __cnfn as_ulong3(ulong3);
ulong3 __ovld __cnfn as_ulong3(ulong4);
ulong3 __ovld __cnfn as_ulong3(float8);
ulong4 __ovld __cnfn as_ulong4(short16);
ulong4 __ovld __cnfn as_ulong4(ushort16);
ulong4 __ovld __cnfn as_ulong4(int8);
ulong4 __ovld __cnfn as_ulong4(uint8);
ulong4 __ovld __cnfn as_ulong4(long3);
ulong4 __ovld __cnfn as_ulong4(long4);
ulong4 __ovld __cnfn as_ulong4(ulong3);
ulong4 __ovld __cnfn as_ulong4(ulong4);
ulong4 __ovld __cnfn as_ulong4(float8);
ulong8 __ovld __cnfn as_ulong8(int16);
ulong8 __ovld __cnfn as_ulong8(uint16);
ulong8 __ovld __cnfn as_ulong8(long8);
ulong8 __ovld __cnfn as_ulong8(ulong8);
ulong8 __ovld __cnfn as_ulong8(float16);
ulong16 __ovld __cnfn as_ulong16(long16);
ulong16 __ovld __cnfn as_ulong16(ulong16);
float __ovld __cnfn as_float(char3);
float __ovld __cnfn as_float(char4);
float __ovld __cnfn as_float(uchar3);
float __ovld __cnfn as_float(uchar4);
float __ovld __cnfn as_float(short2);
float __ovld __cnfn as_float(ushort2);
float __ovld __cnfn as_float(int);
float __ovld __cnfn as_float(uint);
float __ovld __cnfn as_float(float);
float2 __ovld __cnfn as_float2(char8);
float2 __ovld __cnfn as_float2(uchar8);
float2 __ovld __cnfn as_float2(short3);
float2 __ovld __cnfn as_float2(short4);
float2 __ovld __cnfn as_float2(ushort3);
float2 __ovld __cnfn as_float2(ushort4);
float2 __ovld __cnfn as_float2(int2);
float2 __ovld __cnfn as_float2(uint2);
float2 __ovld __cnfn as_float2(long);
float2 __ovld __cnfn as_float2(ulong);
float2 __ovld __cnfn as_float2(float2);
float3 __ovld __cnfn as_float3(char16);
float3 __ovld __cnfn as_float3(uchar16);
float3 __ovld __cnfn as_float3(short8);
float3 __ovld __cnfn as_float3(ushort8);
float3 __ovld __cnfn as_float3(int3);
float3 __ovld __cnfn as_float3(int4);
float3 __ovld __cnfn as_float3(uint3);
float3 __ovld __cnfn as_float3(uint4);
float3 __ovld __cnfn as_float3(long2);
float3 __ovld __cnfn as_float3(ulong2);
float3 __ovld __cnfn as_float3(float3);
float3 __ovld __cnfn as_float3(float4);
float4 __ovld __cnfn as_float4(char16);
float4 __ovld __cnfn as_float4(uchar16);
float4 __ovld __cnfn as_float4(short8);
float4 __ovld __cnfn as_float4(ushort8);
float4 __ovld __cnfn as_float4(int3);
float4 __ovld __cnfn as_float4(int4);
float4 __ovld __cnfn as_float4(uint3);
float4 __ovld __cnfn as_float4(uint4);
float4 __ovld __cnfn as_float4(long2);
float4 __ovld __cnfn as_float4(ulong2);
float4 __ovld __cnfn as_float4(float3);
float4 __ovld __cnfn as_float4(float4);
float8 __ovld __cnfn as_float8(short16);
float8 __ovld __cnfn as_float8(ushort16);
float8 __ovld __cnfn as_float8(int8);
float8 __ovld __cnfn as_float8(uint8);
float8 __ovld __cnfn as_float8(long3);
float8 __ovld __cnfn as_float8(long4);
float8 __ovld __cnfn as_float8(ulong3);
float8 __ovld __cnfn as_float8(ulong4);
float8 __ovld __cnfn as_float8(float8);
float16 __ovld __cnfn as_float16(int16);
float16 __ovld __cnfn as_float16(uint16);
float16 __ovld __cnfn as_float16(long8);
float16 __ovld __cnfn as_float16(ulong8);
float16 __ovld __cnfn as_float16(float16);
#define as_float(x) __builtin_astype((x), float)
#define as_float2(x) __builtin_astype((x), float2)
#define as_float3(x) __builtin_astype((x), float3)
#define as_float4(x) __builtin_astype((x), float4)
#define as_float8(x) __builtin_astype((x), float8)
#define as_float16(x) __builtin_astype((x), float16)
#ifdef cl_khr_fp64
char8 __ovld __cnfn as_char8(double);
char16 __ovld __cnfn as_char16(double2);
uchar8 __ovld __cnfn as_uchar8(double);
uchar16 __ovld __cnfn as_uchar16(double2);
short3 __ovld __cnfn as_short3(double);
short4 __ovld __cnfn as_short4(double);
short8 __ovld __cnfn as_short8(double2);
short16 __ovld __cnfn as_short16(double3);
short16 __ovld __cnfn as_short16(double4);
ushort3 __ovld __cnfn as_ushort3(double);
ushort4 __ovld __cnfn as_ushort4(double);
ushort8 __ovld __cnfn as_ushort8(double2);
ushort16 __ovld __cnfn as_ushort16(double3);
ushort16 __ovld __cnfn as_ushort16(double4);
int2 __ovld __cnfn as_int2(double);
int3 __ovld __cnfn as_int3(double2);
int4 __ovld __cnfn as_int4(double2);
int8 __ovld __cnfn as_int8(double3);
int8 __ovld __cnfn as_int8(double4);
int16 __ovld __cnfn as_int16(double8);
uint2 __ovld __cnfn as_uint2(double);
uint3 __ovld __cnfn as_uint3(double2);
uint4 __ovld __cnfn as_uint4(double2);
uint8 __ovld __cnfn as_uint8(double3);
uint8 __ovld __cnfn as_uint8(double4);
uint16 __ovld __cnfn as_uint16(double8);
long __ovld __cnfn as_long(double);
long2 __ovld __cnfn as_long2(double2);
long3 __ovld __cnfn as_long3(double3);
long3 __ovld __cnfn as_long3(double4);
long4 __ovld __cnfn as_long4(double3);
long4 __ovld __cnfn as_long4(double4);
long8 __ovld __cnfn as_long8(double8);
long16 __ovld __cnfn as_long16(double16);
ulong __ovld __cnfn as_ulong(double);
ulong2 __ovld __cnfn as_ulong2(double2);
ulong3 __ovld __cnfn as_ulong3(double3);
ulong3 __ovld __cnfn as_ulong3(double4);
ulong4 __ovld __cnfn as_ulong4(double3);
ulong4 __ovld __cnfn as_ulong4(double4);
ulong8 __ovld __cnfn as_ulong8(double8);
ulong16 __ovld __cnfn as_ulong16(double16);
float2 __ovld __cnfn as_float2(double);
float3 __ovld __cnfn as_float3(double2);
float4 __ovld __cnfn as_float4(double2);
float8 __ovld __cnfn as_float8(double3);
float8 __ovld __cnfn as_float8(double4);
float16 __ovld __cnfn as_float16(double8);
double __ovld __cnfn as_double(char8);
double __ovld __cnfn as_double(uchar8);
double __ovld __cnfn as_double(short3);
double __ovld __cnfn as_double(short4);
double __ovld __cnfn as_double(ushort3);
double __ovld __cnfn as_double(ushort4);
double __ovld __cnfn as_double(int2);
double __ovld __cnfn as_double(uint2);
double __ovld __cnfn as_double(long);
double __ovld __cnfn as_double(ulong);
double __ovld __cnfn as_double(float2);
double __ovld __cnfn as_double(double);
double2 __ovld __cnfn as_double2(char16);
double2 __ovld __cnfn as_double2(uchar16);
double2 __ovld __cnfn as_double2(short8);
double2 __ovld __cnfn as_double2(ushort8);
double2 __ovld __cnfn as_double2(int3);
double2 __ovld __cnfn as_double2(int4);
double2 __ovld __cnfn as_double2(uint3);
double2 __ovld __cnfn as_double2(uint4);
double2 __ovld __cnfn as_double2(long2);
double2 __ovld __cnfn as_double2(ulong2);
double2 __ovld __cnfn as_double2(float3);
double2 __ovld __cnfn as_double2(float4);
double2 __ovld __cnfn as_double2(double2);
double3 __ovld __cnfn as_double3(short16);
double3 __ovld __cnfn as_double3(ushort16);
double3 __ovld __cnfn as_double3(int8);
double3 __ovld __cnfn as_double3(uint8);
double3 __ovld __cnfn as_double3(long3);
double3 __ovld __cnfn as_double3(long4);
double3 __ovld __cnfn as_double3(ulong3);
double3 __ovld __cnfn as_double3(ulong4);
double3 __ovld __cnfn as_double3(float8);
double3 __ovld __cnfn as_double3(double3);
double3 __ovld __cnfn as_double3(double4);
double4 __ovld __cnfn as_double4(short16);
double4 __ovld __cnfn as_double4(ushort16);
double4 __ovld __cnfn as_double4(int8);
double4 __ovld __cnfn as_double4(uint8);
double4 __ovld __cnfn as_double4(long3);
double4 __ovld __cnfn as_double4(long4);
double4 __ovld __cnfn as_double4(ulong3);
double4 __ovld __cnfn as_double4(ulong4);
double4 __ovld __cnfn as_double4(float8);
double4 __ovld __cnfn as_double4(double3);
double4 __ovld __cnfn as_double4(double4);
double8 __ovld __cnfn as_double8(int16);
double8 __ovld __cnfn as_double8(uint16);
double8 __ovld __cnfn as_double8(long8);
double8 __ovld __cnfn as_double8(ulong8);
double8 __ovld __cnfn as_double8(float16);
double8 __ovld __cnfn as_double8(double8);
double16 __ovld __cnfn as_double16(long16);
double16 __ovld __cnfn as_double16(ulong16);
double16 __ovld __cnfn as_double16(double16);
#define as_double(x) __builtin_astype((x), double)
#define as_double2(x) __builtin_astype((x), double2)
#define as_double3(x) __builtin_astype((x), double3)
#define as_double4(x) __builtin_astype((x), double4)
#define as_double8(x) __builtin_astype((x), double8)
#define as_double16(x) __builtin_astype((x), double16)
#endif //cl_khr_fp64
#ifdef cl_khr_fp16
char2 __ovld __cnfn as_char2(half);
char3 __ovld __cnfn as_char3(half2);
char4 __ovld __cnfn as_char4(half2);
char8 __ovld __cnfn as_char8(half3);
char8 __ovld __cnfn as_char8(half4);
char16 __ovld __cnfn as_char16(half8);
uchar2 __ovld __cnfn as_uchar2(half);
uchar3 __ovld __cnfn as_uchar3(half2);
uchar4 __ovld __cnfn as_uchar4(half2);
uchar8 __ovld __cnfn as_uchar8(half3);
uchar8 __ovld __cnfn as_uchar8(half4);
uchar16 __ovld __cnfn as_uchar16(half8);
short __ovld __cnfn as_short(half);
short2 __ovld __cnfn as_short2(half2);
short3 __ovld __cnfn as_short3(half3);
short3 __ovld __cnfn as_short3(half4);
short4 __ovld __cnfn as_short4(half3);
short4 __ovld __cnfn as_short4(half4);
short8 __ovld __cnfn as_short8(half8);
short16 __ovld __cnfn as_short16(half16);
ushort __ovld __cnfn as_ushort(half);
ushort2 __ovld __cnfn as_ushort2(half2);
ushort3 __ovld __cnfn as_ushort3(half3);
ushort3 __ovld __cnfn as_ushort3(half4);
ushort4 __ovld __cnfn as_ushort4(half3);
ushort4 __ovld __cnfn as_ushort4(half4);
ushort8 __ovld __cnfn as_ushort8(half8);
ushort16 __ovld __cnfn as_ushort16(half16);
int __ovld __cnfn as_int(half2);
int2 __ovld __cnfn as_int2(half3);
int2 __ovld __cnfn as_int2(half4);
int3 __ovld __cnfn as_int3(half8);
int4 __ovld __cnfn as_int4(half8);
int8 __ovld __cnfn as_int8(half16);
uint __ovld __cnfn as_uint(half2);
uint2 __ovld __cnfn as_uint2(half3);
uint2 __ovld __cnfn as_uint2(half4);
uint3 __ovld __cnfn as_uint3(half8);
uint4 __ovld __cnfn as_uint4(half8);
uint8 __ovld __cnfn as_uint8(half16);
long __ovld __cnfn as_long(half3);
long __ovld __cnfn as_long(half4);
long2 __ovld __cnfn as_long2(half8);
long3 __ovld __cnfn as_long3(half16);
long4 __ovld __cnfn as_long4(half16);
ulong __ovld __cnfn as_ulong(half3);
ulong __ovld __cnfn as_ulong(half4);
ulong2 __ovld __cnfn as_ulong2(half8);
ulong3 __ovld __cnfn as_ulong3(half16);
ulong4 __ovld __cnfn as_ulong4(half16);
half __ovld __cnfn as_half(char2);
half __ovld __cnfn as_half(uchar2);
half __ovld __cnfn as_half(short);
half __ovld __cnfn as_half(ushort);
half __ovld __cnfn as_half(half);
half2 __ovld __cnfn as_half2(char3);
half2 __ovld __cnfn as_half2(char4);
half2 __ovld __cnfn as_half2(uchar3);
half2 __ovld __cnfn as_half2(uchar4);
half2 __ovld __cnfn as_half2(short2);
half2 __ovld __cnfn as_half2(ushort2);
half2 __ovld __cnfn as_half2(int);
half2 __ovld __cnfn as_half2(uint);
half2 __ovld __cnfn as_half2(half2);
half2 __ovld __cnfn as_half2(float);
half3 __ovld __cnfn as_half3(char8);
half3 __ovld __cnfn as_half3(uchar8);
half3 __ovld __cnfn as_half3(short3);
half3 __ovld __cnfn as_half3(short4);
half3 __ovld __cnfn as_half3(ushort3);
half3 __ovld __cnfn as_half3(ushort4);
half3 __ovld __cnfn as_half3(int2);
half3 __ovld __cnfn as_half3(uint2);
half3 __ovld __cnfn as_half3(long);
half3 __ovld __cnfn as_half3(ulong);
half3 __ovld __cnfn as_half3(half3);
half3 __ovld __cnfn as_half3(half4);
half3 __ovld __cnfn as_half3(float2);
half4 __ovld __cnfn as_half4(char8);
half4 __ovld __cnfn as_half4(uchar8);
half4 __ovld __cnfn as_half4(short3);
half4 __ovld __cnfn as_half4(short4);
half4 __ovld __cnfn as_half4(ushort3);
half4 __ovld __cnfn as_half4(ushort4);
half4 __ovld __cnfn as_half4(int2);
half4 __ovld __cnfn as_half4(uint2);
half4 __ovld __cnfn as_half4(long);
half4 __ovld __cnfn as_half4(ulong);
half4 __ovld __cnfn as_half4(half3);
half4 __ovld __cnfn as_half4(half4);
half4 __ovld __cnfn as_half4(float2);
half8 __ovld __cnfn as_half8(char16);
half8 __ovld __cnfn as_half8(uchar16);
half8 __ovld __cnfn as_half8(short8);
half8 __ovld __cnfn as_half8(ushort8);
half8 __ovld __cnfn as_half8(int3);
half8 __ovld __cnfn as_half8(int4);
half8 __ovld __cnfn as_half8(uint3);
half8 __ovld __cnfn as_half8(uint4);
half8 __ovld __cnfn as_half8(long2);
half8 __ovld __cnfn as_half8(ulong2);
half8 __ovld __cnfn as_half8(half8);
half8 __ovld __cnfn as_half8(float3);
half8 __ovld __cnfn as_half8(float4);
half16 __ovld __cnfn as_half16(short16);
half16 __ovld __cnfn as_half16(ushort16);
half16 __ovld __cnfn as_half16(int8);
half16 __ovld __cnfn as_half16(uint8);
half16 __ovld __cnfn as_half16(long3);
half16 __ovld __cnfn as_half16(long4);
half16 __ovld __cnfn as_half16(ulong3);
half16 __ovld __cnfn as_half16(ulong4);
half16 __ovld __cnfn as_half16(half16);
half16 __ovld __cnfn as_half16(float8);
float __ovld __cnfn as_float(half2);
float2 __ovld __cnfn as_float2(half3);
float2 __ovld __cnfn as_float2(half4);
float3 __ovld __cnfn as_float3(half8);
float4 __ovld __cnfn as_float4(half8);
float8 __ovld __cnfn as_float8(half16);
#ifdef cl_khr_fp64
half3 __ovld __cnfn as_half3(double);
half4 __ovld __cnfn as_half4(double);
half8 __ovld __cnfn as_half8(double2);
half16 __ovld __cnfn as_half16(double3);
half16 __ovld __cnfn as_half16(double4);
double __ovld __cnfn as_double(half3);
double __ovld __cnfn as_double(half4);
double2 __ovld __cnfn as_double2(half8);
double3 __ovld __cnfn as_double3(half16);
double4 __ovld __cnfn as_double4(half16);
#endif //cl_khr_fp64
#define as_half(x) __builtin_astype((x), half)
#define as_half2(x) __builtin_astype((x), half2)
#define as_half3(x) __builtin_astype((x), half3)
#define as_half4(x) __builtin_astype((x), half4)
#define as_half8(x) __builtin_astype((x), half8)
#define as_half16(x) __builtin_astype((x), half16)
#endif //cl_khr_fp16
// OpenCL v1.1 s6.9, v1.2/2.0 s6.10 - Function qualifiers

View File

@ -1,7 +1,4 @@
// RUN: %clang_cc1 %s -emit-llvm -triple spir-unknown-unknown -o - -verify -fsyntax-only
typedef __attribute__(( ext_vector_type(3) )) char char3;
typedef __attribute__(( ext_vector_type(16) )) char char16;
// RUN: %clang_cc1 %s -emit-llvm -triple spir-unknown-unknown -finclude-default-header -o - -verify -fsyntax-only
char3 f1(char16 x) {
return __builtin_astype(x, char3); // expected-error{{invalid reinterpretation: sizes of 'char3' (vector of 3 'char' values) and 'char16' (vector of 16 'char' values) must match}}
@ -11,3 +8,7 @@ char16 f3(int x) {
return __builtin_astype(x, char16); // expected-error{{invalid reinterpretation: sizes of 'char16' (vector of 16 'char' values) and 'int' must match}}
}
void foo() {
char src = 1;
int dst = as_int(src); // expected-error{{invalid reinterpretation: sizes of 'int' and 'char' must match}}
}