1/*========================== begin_copyright_notice ============================
2
3Copyright (C) 2017-2021 Intel Corporation
4
5SPDX-License-Identifier: MIT
6
7============================= end_copyright_notice ===========================*/
8
9#include "../include/BiF_Definitions.cl"
10#include "spirv.h"
11
12
13INLINE
14char OVERLOADABLE ctz( char x )
15{
16    return SPIRV_OCL_BUILTIN(ctz, _i8, )( x );
17}
18
19INLINE
20char2 OVERLOADABLE ctz( char2 x )
21{
22    return SPIRV_OCL_BUILTIN(ctz, _v2i8, )( x );
23}
24
25INLINE
26char3 OVERLOADABLE ctz( char3 x )
27{
28    return SPIRV_OCL_BUILTIN(ctz, _v3i8, )( x );
29}
30
31INLINE
32char4 OVERLOADABLE ctz( char4 x )
33{
34    return SPIRV_OCL_BUILTIN(ctz, _v4i8, )( x );
35}
36
37INLINE
38char8 OVERLOADABLE ctz( char8 x )
39{
40    return SPIRV_OCL_BUILTIN(ctz, _v8i8, )( x );
41}
42
43INLINE
44char16 OVERLOADABLE ctz( char16 x )
45{
46    return SPIRV_OCL_BUILTIN(ctz, _v16i8, )( x );
47}
48
49INLINE
50uchar2 OVERLOADABLE ctz( uchar2 x )
51{
52    return as_uchar2( SPIRV_OCL_BUILTIN(ctz, _v2i8, )( as_char2(x) ) );
53}
54
55INLINE
56uchar3 OVERLOADABLE ctz( uchar3 x )
57{
58    return as_uchar3( SPIRV_OCL_BUILTIN(ctz, _v3i8, )( as_char3(x) ) );
59}
60
61INLINE
62uchar4 OVERLOADABLE ctz( uchar4 x )
63{
64    return as_uchar4( SPIRV_OCL_BUILTIN(ctz, _v4i8, )( as_char4(x) ) );
65}
66
67INLINE
68uchar8 OVERLOADABLE ctz( uchar8 x )
69{
70    return as_uchar8( SPIRV_OCL_BUILTIN(ctz, _v8i8, )( as_char8(x) ) );
71}
72
73INLINE
74uchar16 OVERLOADABLE ctz( uchar16 x )
75{
76    return as_uchar16( SPIRV_OCL_BUILTIN(ctz, _v16i8, )( as_char16(x) ) );
77}
78
79INLINE
80short OVERLOADABLE ctz( short x )
81{
82    return SPIRV_OCL_BUILTIN(ctz, _i16, )( x );
83}
84
85INLINE
86short2 OVERLOADABLE ctz( short2 x )
87{
88    return SPIRV_OCL_BUILTIN(ctz, _v2i16, )( x );
89}
90
91INLINE
92short3 OVERLOADABLE ctz( short3 x )
93{
94    return SPIRV_OCL_BUILTIN(ctz, _v3i16, )( x );
95}
96
97INLINE
98short4 OVERLOADABLE ctz( short4 x )
99{
100    return SPIRV_OCL_BUILTIN(ctz, _v4i16, )( x );
101}
102
103INLINE
104short8 OVERLOADABLE ctz( short8 x )
105{
106    return SPIRV_OCL_BUILTIN(ctz, _v8i16, )( x );
107}
108
109INLINE
110short16 OVERLOADABLE ctz( short16 x )
111{
112    return SPIRV_OCL_BUILTIN(ctz, _v16i16, )( x );
113}
114
115
116
117INLINE
118ushort2 OVERLOADABLE ctz( ushort2 x )
119{
120    return as_ushort2( SPIRV_OCL_BUILTIN(ctz, _v2i16, )( as_short2(x) ) );
121}
122
123INLINE
124ushort3 OVERLOADABLE ctz( ushort3 x )
125{
126    return as_ushort3( SPIRV_OCL_BUILTIN(ctz, _v3i16, )( as_short3(x) ) );
127}
128
129INLINE
130ushort4 OVERLOADABLE ctz( ushort4 x )
131{
132    return as_ushort4( SPIRV_OCL_BUILTIN(ctz, _v4i16, )( as_short4(x) ) );
133}
134
135INLINE
136ushort8 OVERLOADABLE ctz( ushort8 x )
137{
138    return as_ushort8( SPIRV_OCL_BUILTIN(ctz, _v8i16, )( as_short8(x) ) );
139}
140
141INLINE
142ushort16 OVERLOADABLE ctz( ushort16 x )
143{
144    return as_ushort16( SPIRV_OCL_BUILTIN(ctz, _v16i16, )( as_short16(x) ) );
145}
146
147INLINE
148int OVERLOADABLE ctz( int x )
149{
150    return SPIRV_OCL_BUILTIN(ctz, _i32, )( x );
151}
152
153INLINE
154int2 OVERLOADABLE ctz( int2 x )
155{
156    return SPIRV_OCL_BUILTIN(ctz, _v2i32, )( x );
157}
158
159INLINE
160int3 OVERLOADABLE ctz( int3 x )
161{
162    return SPIRV_OCL_BUILTIN(ctz, _v3i32, )( x );
163}
164
165INLINE
166int4 OVERLOADABLE ctz( int4 x )
167{
168    return SPIRV_OCL_BUILTIN(ctz, _v4i32, )( x );
169}
170
171INLINE
172int8 OVERLOADABLE ctz( int8 x )
173{
174    return SPIRV_OCL_BUILTIN(ctz, _v8i32, )( x );
175}
176
177INLINE
178int16 OVERLOADABLE ctz( int16 x )
179{
180    return SPIRV_OCL_BUILTIN(ctz, _v16i32, )( x );
181}
182
183
184
185INLINE
186uint2 OVERLOADABLE ctz( uint2 x )
187{
188    return as_uint2( SPIRV_OCL_BUILTIN(ctz, _v2i32, )( as_int2(x) ) );
189}
190
191INLINE
192uint3 OVERLOADABLE ctz( uint3 x )
193{
194    return as_uint3( SPIRV_OCL_BUILTIN(ctz, _v3i32, )( as_int3(x) ) );
195}
196
197INLINE
198uint4 OVERLOADABLE ctz( uint4 x )
199{
200    return as_uint4( SPIRV_OCL_BUILTIN(ctz, _v4i32, )( as_int4(x) ) );
201}
202
203INLINE
204uint8 OVERLOADABLE ctz( uint8 x )
205{
206    return as_uint8( SPIRV_OCL_BUILTIN(ctz, _v8i32, )( as_int8(x) ) );
207}
208
209INLINE
210uint16 OVERLOADABLE ctz( uint16 x )
211{
212    return as_uint16( SPIRV_OCL_BUILTIN(ctz, _v16i32, )( as_int16(x) ) );
213}
214
215INLINE
216long OVERLOADABLE ctz( long x )
217{
218    return SPIRV_OCL_BUILTIN(ctz, _i64, )( x );
219}
220
221INLINE
222long2 OVERLOADABLE ctz( long2 x )
223{
224    return SPIRV_OCL_BUILTIN(ctz, _v2i64, )( x );
225}
226
227INLINE
228long3 OVERLOADABLE ctz( long3 x )
229{
230    return SPIRV_OCL_BUILTIN(ctz, _v3i64, )( x );
231}
232
233INLINE
234long4 OVERLOADABLE ctz( long4 x )
235{
236    return SPIRV_OCL_BUILTIN(ctz, _v4i64, )( x );
237}
238
239INLINE
240long8 OVERLOADABLE ctz( long8 x )
241{
242    return SPIRV_OCL_BUILTIN(ctz, _v8i64, )( x );
243}
244
245INLINE
246long16 OVERLOADABLE ctz( long16 x )
247{
248    return SPIRV_OCL_BUILTIN(ctz, _v16i64, )( x );
249}
250
251INLINE
252ulong OVERLOADABLE ctz( ulong x )
253{
254    return as_ulong( SPIRV_OCL_BUILTIN(ctz, _i64, )( as_long(x) ) );
255}
256
257INLINE
258ulong2 OVERLOADABLE ctz( ulong2 x )
259{
260    return as_ulong2( SPIRV_OCL_BUILTIN(ctz, _v2i64, )( as_long2(x) ) );
261}
262
263INLINE
264ulong3 OVERLOADABLE ctz( ulong3 x )
265{
266    return as_ulong3( SPIRV_OCL_BUILTIN(ctz, _v3i64, )( as_long3(x) ) );
267}
268
269INLINE
270ulong4 OVERLOADABLE ctz( ulong4 x )
271{
272    return as_ulong4( SPIRV_OCL_BUILTIN(ctz, _v4i64, )( as_long4(x) ) );
273}
274
275INLINE
276ulong8 OVERLOADABLE ctz( ulong8 x )
277{
278    return as_ulong8( SPIRV_OCL_BUILTIN(ctz, _v8i64, )( as_long8(x) ) );
279}
280
281INLINE
282ulong16 OVERLOADABLE ctz( ulong16 x )
283{
284    return as_ulong16( SPIRV_OCL_BUILTIN(ctz, _v16i64, )( as_long16(x) ) );
285}
286
287