1 #define _CLC_VSTORE_DECL(SUFFIX, PRIM_TYPE, VEC_TYPE, WIDTH, ADDR_SPACE, RND) \
2   _CLC_OVERLOAD _CLC_DECL void vstore##SUFFIX##WIDTH##RND(VEC_TYPE vec, size_t offset, ADDR_SPACE PRIM_TYPE *out);
3 
4 #define _CLC_VECTOR_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE, ADDR_SPACE, RND) \
5   _CLC_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE##2, 2, ADDR_SPACE, RND) \
6   _CLC_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE##3, 3, ADDR_SPACE, RND) \
7   _CLC_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE##4, 4, ADDR_SPACE, RND) \
8   _CLC_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE##8, 8, ADDR_SPACE, RND) \
9   _CLC_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE##16, 16, ADDR_SPACE, RND)
10 
11 #define _CLC_VECTOR_VSTORE_PRIM3(SUFFIX, MEM_TYPE, PRIM_TYPE, RND) \
12   _CLC_VECTOR_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE, __private, RND) \
13   _CLC_VECTOR_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE, __local, RND) \
14   _CLC_VECTOR_VSTORE_DECL(SUFFIX, MEM_TYPE, PRIM_TYPE, __global, RND)
15 
16 #define _CLC_VECTOR_VSTORE_PRIM1(PRIM_TYPE) \
17   _CLC_VECTOR_VSTORE_PRIM3(,PRIM_TYPE, PRIM_TYPE, )
18 
19 #define _CLC_VECTOR_VSTORE_HALF_PRIM1(PRIM_TYPE, RND) \
20 	_CLC_VSTORE_DECL(_half, half, PRIM_TYPE, , __private, RND) \
21 	_CLC_VSTORE_DECL(_half, half, PRIM_TYPE, , __local, RND) \
22 	_CLC_VSTORE_DECL(_half, half, PRIM_TYPE, , __global, RND) \
23 	_CLC_VECTOR_VSTORE_PRIM3(_half, half, PRIM_TYPE, RND) \
24 	_CLC_VSTORE_DECL(a_half, half, PRIM_TYPE, , __private, RND) \
25 	_CLC_VSTORE_DECL(a_half, half, PRIM_TYPE, , __local, RND) \
26 	_CLC_VSTORE_DECL(a_half, half, PRIM_TYPE, , __global, RND) \
27 	_CLC_VECTOR_VSTORE_PRIM3(a_half, half, PRIM_TYPE, RND)
28 
29 _CLC_VECTOR_VSTORE_PRIM1(char)
30 _CLC_VECTOR_VSTORE_PRIM1(uchar)
31 _CLC_VECTOR_VSTORE_PRIM1(short)
32 _CLC_VECTOR_VSTORE_PRIM1(ushort)
33 _CLC_VECTOR_VSTORE_PRIM1(int)
34 _CLC_VECTOR_VSTORE_PRIM1(uint)
35 _CLC_VECTOR_VSTORE_PRIM1(long)
36 _CLC_VECTOR_VSTORE_PRIM1(ulong)
37 _CLC_VECTOR_VSTORE_PRIM1(float)
38 
39 _CLC_VECTOR_VSTORE_HALF_PRIM1(float,)
40 _CLC_VECTOR_VSTORE_HALF_PRIM1(float, _rtz)
41 _CLC_VECTOR_VSTORE_HALF_PRIM1(float, _rtn)
42 _CLC_VECTOR_VSTORE_HALF_PRIM1(float, _rtp)
43 _CLC_VECTOR_VSTORE_HALF_PRIM1(float, _rte)
44 
45 #ifdef cl_khr_fp64
46   _CLC_VECTOR_VSTORE_PRIM1(double)
47   _CLC_VECTOR_VSTORE_HALF_PRIM1(double,)
48   _CLC_VECTOR_VSTORE_HALF_PRIM1(double, _rtz)
49   _CLC_VECTOR_VSTORE_HALF_PRIM1(double, _rtn)
50   _CLC_VECTOR_VSTORE_HALF_PRIM1(double, _rtp)
51   _CLC_VECTOR_VSTORE_HALF_PRIM1(double, _rte)
52 #endif
53 
54 #ifdef cl_khr_fp16
55   _CLC_VECTOR_VSTORE_PRIM1(half)
56 #endif
57 
58 
59 #undef _CLC_VSTORE_DECL
60 #undef _CLC_VECTOR_VSTORE_DECL
61 #undef _CLC_VECTOR_VSTORE_PRIM3
62 #undef _CLC_VECTOR_VSTORE_PRIM1
63