OSDN Git Service

radeonsi: initial WIP SI code
[android-x86/external-mesa.git] / src / gallium / drivers / radeon / AMDILIntrinsics.td
1 //===- AMDILIntrinsics.td - Defines AMDIL Intrinscs -*- tablegen -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //==-----------------------------------------------------------------------===//
9 //
10 // This file defines all of the amdil-specific intrinsics
11 //
12 //===---------------------------------------------------------------===//
13
14 let TargetPrefix = "AMDIL", isTarget = 1 in {
15 //------------- Synchronization Functions - OpenCL 6.11.9 --------------------//
16   def int_AMDIL_fence   : GCCBuiltin<"mem_fence">,
17         UnaryIntNoRetInt;
18   def int_AMDIL_fence_global   : GCCBuiltin<"mem_fence_global">,
19         UnaryIntNoRetInt;
20   def int_AMDIL_fence_local   : GCCBuiltin<"mem_fence_local">,
21         UnaryIntNoRetInt;
22   def int_AMDIL_fence_region   : GCCBuiltin<"mem_fence_region">,
23         UnaryIntNoRetInt;
24   def int_AMDIL_fence_read_only   : GCCBuiltin<"read_mem_fence">,
25         UnaryIntNoRetInt;
26   def int_AMDIL_fence_read_only_global   : GCCBuiltin<"read_mem_fence_global">,
27         UnaryIntNoRetInt;
28   def int_AMDIL_fence_read_only_local   : GCCBuiltin<"read_mem_fence_local">,
29         UnaryIntNoRetInt;
30   def int_AMDIL_fence_read_only_region : GCCBuiltin<"read_mem_fence_region">,
31         UnaryIntNoRetInt;
32   def int_AMDIL_fence_write_only   : GCCBuiltin<"write_mem_fence">,
33         UnaryIntNoRetInt;
34   def int_AMDIL_fence_write_only_global   : GCCBuiltin<"write_mem_fence_global">,
35         UnaryIntNoRetInt;
36   def int_AMDIL_fence_write_only_local   : GCCBuiltin<"write_mem_fence_local">,
37         UnaryIntNoRetInt;
38   def int_AMDIL_fence_write_only_region : GCCBuiltin<"write_mem_fence_region">,
39         UnaryIntNoRetInt;
40
41   def int_AMDIL_early_exit : GCCBuiltin<"__amdil_early_exit">,
42         UnaryIntNoRetInt;
43
44   def int_AMDIL_cmov_logical  : GCCBuiltin<"__amdil_cmov_logical">,
45           TernaryIntInt;
46   def int_AMDIL_fabs : GCCBuiltin<"__amdil_fabs">, UnaryIntFloat;
47   def int_AMDIL_abs : GCCBuiltin<"__amdil_abs">, UnaryIntInt;
48
49   def int_AMDIL_bit_extract_i32 : GCCBuiltin<"__amdil_ibit_extract">,
50           TernaryIntInt;
51   def int_AMDIL_bit_extract_u32 : GCCBuiltin<"__amdil_ubit_extract">,
52           TernaryIntInt;
53   def int_AMDIL_bit_reverse_u32 : GCCBuiltin<"__amdil_ubit_reverse">,
54           UnaryIntInt;
55   def int_AMDIL_bit_count_i32 : GCCBuiltin<"__amdil_count_bits">,
56           UnaryIntInt;
57   def int_AMDIL_bit_find_first_lo : GCCBuiltin<"__amdil_ffb_lo">,
58           UnaryIntInt;
59   def int_AMDIL_bit_find_first_hi : GCCBuiltin<"__amdil_ffb_hi">,
60           UnaryIntInt;
61   def int_AMDIL_bit_find_first_sgn : GCCBuiltin<"__amdil_ffb_signed">,
62           UnaryIntInt;
63   def int_AMDIL_media_bitalign : GCCBuiltin<"__amdil_bitalign">,
64                     TernaryIntInt;
65   def int_AMDIL_media_bytealign : GCCBuiltin<"__amdil_bytealign">,
66                     TernaryIntInt;
67   def int_AMDIL_bit_insert_u32 : GCCBuiltin<"__amdil_ubit_insert">,
68                     QuaternaryIntInt;
69   def int_AMDIL_bfi : GCCBuiltin<"__amdil_bfi">,
70       TernaryIntInt;
71   def int_AMDIL_bfm : GCCBuiltin<"__amdil_bfm">,
72       BinaryIntInt;
73   def int_AMDIL_mad_i32 : GCCBuiltin<"__amdil_imad">,
74           TernaryIntInt;
75   def int_AMDIL_mad_u32 : GCCBuiltin<"__amdil_umad">,
76           TernaryIntInt;
77   def int_AMDIL_mad     : GCCBuiltin<"__amdil_mad">,
78           TernaryIntFloat;
79   def int_AMDIL_mulhi_i32 : GCCBuiltin<"__amdil_imul_high">,
80           BinaryIntInt;
81   def int_AMDIL_mulhi_u32 : GCCBuiltin<"__amdil_umul_high">,
82           BinaryIntInt;
83   def int_AMDIL_mul24_i32 : GCCBuiltin<"__amdil_imul24">,
84           BinaryIntInt;
85   def int_AMDIL_mul24_u32 : GCCBuiltin<"__amdil_umul24">,
86           BinaryIntInt;
87   def int_AMDIL_mulhi24_i32 : GCCBuiltin<"__amdil_imul24_high">,
88           BinaryIntInt;
89   def int_AMDIL_mulhi24_u32 : GCCBuiltin<"__amdil_umul24_high">,
90           BinaryIntInt;
91   def int_AMDIL_mad24_i32 : GCCBuiltin<"__amdil_imad24">,
92           TernaryIntInt;
93   def int_AMDIL_mad24_u32 : GCCBuiltin<"__amdil_umad24">,
94           TernaryIntInt;
95   def int_AMDIL_carry_i32 : GCCBuiltin<"__amdil_carry">,
96           BinaryIntInt;
97   def int_AMDIL_borrow_i32 : GCCBuiltin<"__amdil_borrow">,
98           BinaryIntInt;
99   def int_AMDIL_min_i32 : GCCBuiltin<"__amdil_imin">,
100           BinaryIntInt;
101   def int_AMDIL_min_u32 : GCCBuiltin<"__amdil_umin">,
102           BinaryIntInt;
103   def int_AMDIL_min     : GCCBuiltin<"__amdil_min">,
104           BinaryIntFloat;
105   def int_AMDIL_max_i32 : GCCBuiltin<"__amdil_imax">,
106           BinaryIntInt;
107   def int_AMDIL_max_u32 : GCCBuiltin<"__amdil_umax">,
108           BinaryIntInt;
109   def int_AMDIL_max     : GCCBuiltin<"__amdil_max">,
110           BinaryIntFloat;
111   def int_AMDIL_media_lerp_u4 : GCCBuiltin<"__amdil_u4lerp">,
112           TernaryIntInt;
113   def int_AMDIL_media_sad : GCCBuiltin<"__amdil_sad">,
114           TernaryIntInt;
115   def int_AMDIL_media_sad_hi : GCCBuiltin<"__amdil_sadhi">,
116           TernaryIntInt;
117   def int_AMDIL_fraction : GCCBuiltin<"__amdil_fraction">,
118           UnaryIntFloat;
119   def int_AMDIL_clamp : GCCBuiltin<"__amdil_clamp">,
120           TernaryIntFloat;
121   def int_AMDIL_pireduce : GCCBuiltin<"__amdil_pireduce">,
122           UnaryIntFloat;
123   def int_AMDIL_round_nearest : GCCBuiltin<"__amdil_round_nearest">,
124           UnaryIntFloat;
125   def int_AMDIL_round_neginf : GCCBuiltin<"__amdil_round_neginf">,
126           UnaryIntFloat;
127   def int_AMDIL_round_posinf : GCCBuiltin<"__amdil_round_posinf">,
128           UnaryIntFloat;
129   def int_AMDIL_round_zero : GCCBuiltin<"__amdil_round_zero">,
130           UnaryIntFloat;
131   def int_AMDIL_acos : GCCBuiltin<"__amdil_acos">,
132           UnaryIntFloat;
133   def int_AMDIL_atan : GCCBuiltin<"__amdil_atan">,
134           UnaryIntFloat;
135   def int_AMDIL_asin : GCCBuiltin<"__amdil_asin">,
136           UnaryIntFloat;
137   def int_AMDIL_cos : GCCBuiltin<"__amdil_cos">,
138           UnaryIntFloat;
139   def int_AMDIL_cos_vec : GCCBuiltin<"__amdil_cos_vec">,
140           UnaryIntFloat;
141   def int_AMDIL_tan : GCCBuiltin<"__amdil_tan">,
142           UnaryIntFloat;
143   def int_AMDIL_sin : GCCBuiltin<"__amdil_sin">,
144           UnaryIntFloat;
145   def int_AMDIL_sin_vec : GCCBuiltin<"__amdil_sin_vec">,
146           UnaryIntFloat;
147   def int_AMDIL_pow : GCCBuiltin<"__amdil_pow">, BinaryIntFloat;
148   def int_AMDIL_div : GCCBuiltin<"__amdil_div">, BinaryIntFloat;
149   def int_AMDIL_udiv : GCCBuiltin<"__amdil_udiv">, BinaryIntInt;
150   def int_AMDIL_sqrt: GCCBuiltin<"__amdil_sqrt">,
151           UnaryIntFloat;
152   def int_AMDIL_sqrt_vec: GCCBuiltin<"__amdil_sqrt_vec">,
153           UnaryIntFloat;
154   def int_AMDIL_exp : GCCBuiltin<"__amdil_exp">,
155           UnaryIntFloat;
156   def int_AMDIL_exp_vec : GCCBuiltin<"__amdil_exp_vec">,
157           UnaryIntFloat;
158   def int_AMDIL_exn : GCCBuiltin<"__amdil_exn">,
159           UnaryIntFloat;
160   def int_AMDIL_log : GCCBuiltin<"__amdil_log">,
161           UnaryIntFloat;
162   def int_AMDIL_log_vec : GCCBuiltin<"__amdil_log_vec">,
163           UnaryIntFloat;
164   def int_AMDIL_ln : GCCBuiltin<"__amdil_ln">,
165           UnaryIntFloat;
166   def int_AMDIL_sign: GCCBuiltin<"__amdil_sign">,
167           UnaryIntFloat;
168   def int_AMDIL_fma: GCCBuiltin<"__amdil_fma">,
169           TernaryIntFloat;
170   def int_AMDIL_rsq : GCCBuiltin<"__amdil_rsq">,
171           UnaryIntFloat;
172   def int_AMDIL_rsq_vec : GCCBuiltin<"__amdil_rsq_vec">,
173           UnaryIntFloat;
174   def int_AMDIL_length : GCCBuiltin<"__amdil_length">,
175           UnaryIntFloat;
176   def int_AMDIL_lerp : GCCBuiltin<"__amdil_lerp">,
177           TernaryIntFloat;
178   def int_AMDIL_media_sad4 : GCCBuiltin<"__amdil_sad4">,
179       Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty,
180            llvm_v4i32_ty, llvm_i32_ty], []>;
181
182   def int_AMDIL_frexp_f64 : GCCBuiltin<"__amdil_frexp">,
183         Intrinsic<[llvm_v2i64_ty], [llvm_double_ty], []>;
184  def int_AMDIL_ldexp : GCCBuiltin<"__amdil_ldexp">,
185     Intrinsic<[llvm_anyfloat_ty], [llvm_anyfloat_ty, llvm_anyint_ty], []>;
186   def int_AMDIL_drcp : GCCBuiltin<"__amdil_rcp">,
187       Intrinsic<[llvm_double_ty], [llvm_double_ty], []>;
188   def int_AMDIL_convert_f16_f32 : GCCBuiltin<"__amdil_half_to_float">,
189       ConvertIntITOF;
190   def int_AMDIL_convert_f32_f16 : GCCBuiltin<"__amdil_float_to_half">,
191       ConvertIntFTOI;
192   def int_AMDIL_convert_f32_i32_rpi : GCCBuiltin<"__amdil_float_to_int_rpi">,
193       ConvertIntFTOI;
194   def int_AMDIL_convert_f32_i32_flr : GCCBuiltin<"__amdil_float_to_int_flr">,
195       ConvertIntFTOI;
196   def int_AMDIL_convert_f32_f16_near : GCCBuiltin<"__amdil_float_to_half_near">,
197       ConvertIntFTOI;
198   def int_AMDIL_convert_f32_f16_neg_inf : GCCBuiltin<"__amdil_float_to_half_neg_inf">,
199       ConvertIntFTOI;
200   def int_AMDIL_convert_f32_f16_plus_inf : GCCBuiltin<"__amdil_float_to_half_plus_inf">,
201       ConvertIntFTOI;
202  def int_AMDIL_media_convert_f2v4u8 : GCCBuiltin<"__amdil_f_2_u4">,
203       Intrinsic<[llvm_i32_ty], [llvm_v4f32_ty], []>;
204   def int_AMDIL_media_unpack_byte_0 : GCCBuiltin<"__amdil_unpack_0">,
205       ConvertIntITOF;
206   def int_AMDIL_media_unpack_byte_1 : GCCBuiltin<"__amdil_unpack_1">,
207       ConvertIntITOF;
208   def int_AMDIL_media_unpack_byte_2 : GCCBuiltin<"__amdil_unpack_2">,
209       ConvertIntITOF;
210   def int_AMDIL_media_unpack_byte_3 : GCCBuiltin<"__amdil_unpack_3">,
211       ConvertIntITOF;
212   def int_AMDIL_dp2_add : GCCBuiltin<"__amdil_dp2_add">,
213         Intrinsic<[llvm_float_ty], [llvm_v2f32_ty,
214           llvm_v2f32_ty, llvm_float_ty], []>;
215   def int_AMDIL_dp2 : GCCBuiltin<"__amdil_dp2">,
216         Intrinsic<[llvm_float_ty], [llvm_v2f32_ty,
217           llvm_v2f32_ty], []>;
218   def int_AMDIL_dp3 : GCCBuiltin<"__amdil_dp3">,
219         Intrinsic<[llvm_float_ty], [llvm_v4f32_ty,
220           llvm_v4f32_ty], []>;
221   def int_AMDIL_dp4 : GCCBuiltin<"__amdil_dp4">,
222         Intrinsic<[llvm_float_ty], [llvm_v4f32_ty,
223           llvm_v4f32_ty], []>;
224 //===---------------------- Image functions begin ------------------------===//
225   def int_AMDIL_image1d_write : GCCBuiltin<"__amdil_image1d_write">,
226       Intrinsic<[], [llvm_ptr_ty, llvm_v2i32_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
227
228   def int_AMDIL_image1d_read_norm  : GCCBuiltin<"__amdil_image1d_read_norm">,
229       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
230
231   def int_AMDIL_image1d_read_unnorm  : GCCBuiltin<"__amdil_image1d_read_unnorm">,
232       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
233
234   def int_AMDIL_image1d_info0 : GCCBuiltin<"__amdil_image1d_info0">,
235       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
236
237   def int_AMDIL_image1d_info1 : GCCBuiltin<"__amdil_image1d_info1">,
238       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
239
240  def int_AMDIL_image1d_array_write : GCCBuiltin<"__amdil_image1d_array_write">,
241       Intrinsic<[], [llvm_ptr_ty, llvm_v2i32_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
242
243   def int_AMDIL_image1d_array_read_norm  : GCCBuiltin<"__amdil_image1d_array_read_norm">,
244       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
245
246   def int_AMDIL_image1d_array_read_unnorm  : GCCBuiltin<"__amdil_image1d_array_read_unnorm">,
247       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
248
249   def int_AMDIL_image1d_array_info0 : GCCBuiltin<"__amdil_image1d_array_info0">,
250       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
251
252   def int_AMDIL_image1d_array_info1 : GCCBuiltin<"__amdil_image1d_array_info1">,
253       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
254
255  def int_AMDIL_image2d_write : GCCBuiltin<"__amdil_image2d_write">,
256       Intrinsic<[], [llvm_ptr_ty, llvm_v2i32_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
257
258   def int_AMDIL_image2d_read_norm  : GCCBuiltin<"__amdil_image2d_read_norm">,
259       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
260
261   def int_AMDIL_image2d_read_unnorm  : GCCBuiltin<"__amdil_image2d_read_unnorm">,
262       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
263
264   def int_AMDIL_image2d_info0 : GCCBuiltin<"__amdil_image2d_info0">,
265       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
266
267   def int_AMDIL_image2d_info1 : GCCBuiltin<"__amdil_image2d_info1">,
268       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
269
270  def int_AMDIL_image2d_array_write : GCCBuiltin<"__amdil_image2d_array_write">,
271       Intrinsic<[], [llvm_ptr_ty, llvm_v2i32_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
272
273   def int_AMDIL_image2d_array_read_norm  : GCCBuiltin<"__amdil_image2d_array_read_norm">,
274       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
275
276   def int_AMDIL_image2d_array_read_unnorm  : GCCBuiltin<"__amdil_image2d_array_read_unnorm">,
277       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
278
279   def int_AMDIL_image2d_array_info0 : GCCBuiltin<"__amdil_image2d_array_info0">,
280       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
281
282   def int_AMDIL_image2d_array_info1 : GCCBuiltin<"__amdil_image2d_array_info1">,
283       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
284
285   def int_AMDIL_image3d_write : GCCBuiltin<"__amdil_image3d_write">,
286          Intrinsic<[], [llvm_ptr_ty, llvm_v4i32_ty, llvm_v4i32_ty], [IntrReadWriteArgMem]>;
287
288   def int_AMDIL_image3d_read_norm  : GCCBuiltin<"__amdil_image3d_read_norm">,
289       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
290
291   def int_AMDIL_image3d_read_unnorm  : GCCBuiltin<"__amdil_image3d_read_unnorm">,
292       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty, llvm_i32_ty, llvm_v4f32_ty], [IntrReadWriteArgMem]>;
293
294   def int_AMDIL_image3d_info0 : GCCBuiltin<"__amdil_image3d_info0">,
295       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
296
297   def int_AMDIL_image3d_info1 : GCCBuiltin<"__amdil_image3d_info1">,
298       Intrinsic<[llvm_v4i32_ty], [llvm_ptr_ty], []>;
299
300 //===---------------------- Image functions end --------------------------===//
301
302   def int_AMDIL_append_alloc_i32 : GCCBuiltin<"__amdil_append_alloc">,
303       Intrinsic<[llvm_i32_ty], [llvm_ptr_ty], [IntrReadWriteArgMem]>;
304   def int_AMDIL_append_consume_i32 : GCCBuiltin<"__amdil_append_consume">,
305       Intrinsic<[llvm_i32_ty], [llvm_ptr_ty], [IntrReadWriteArgMem]>;
306   def int_AMDIL_append_alloc_i32_noret : GCCBuiltin<"__amdil_append_alloc_noret">,
307       Intrinsic<[llvm_i32_ty], [llvm_ptr_ty], [IntrReadWriteArgMem]>;
308   def int_AMDIL_append_consume_i32_noret : GCCBuiltin<"__amdil_append_consume_noret">,
309       Intrinsic<[llvm_i32_ty], [llvm_ptr_ty], [IntrReadWriteArgMem]>;
310
311   def int_AMDIL_get_global_id : GCCBuiltin<"__amdil_get_global_id_int">,
312       Intrinsic<[llvm_v4i32_ty], [], []>;
313   def int_AMDIL_get_local_id : GCCBuiltin<"__amdil_get_local_id_int">,
314       Intrinsic<[llvm_v4i32_ty], [], []>;
315   def int_AMDIL_get_group_id : GCCBuiltin<"__amdil_get_group_id_int">,
316       Intrinsic<[llvm_v4i32_ty], [], []>;
317   def int_AMDIL_get_num_groups : GCCBuiltin<"__amdil_get_num_groups_int">,
318       Intrinsic<[llvm_v4i32_ty], [], []>;
319   def int_AMDIL_get_local_size : GCCBuiltin<"__amdil_get_local_size_int">,
320       Intrinsic<[llvm_v4i32_ty], [], []>;
321   def int_AMDIL_get_global_size : GCCBuiltin<"__amdil_get_global_size_int">,
322       Intrinsic<[llvm_v4i32_ty], [], []>;
323   def int_AMDIL_get_global_offset : GCCBuiltin<"__amdil_get_global_offset_int">,
324       Intrinsic<[llvm_v4i32_ty], [], []>;
325   def int_AMDIL_get_work_dim : GCCBuiltin<"get_work_dim">,
326       Intrinsic<[llvm_i32_ty], [], []>;
327   def int_AMDIL_get_printf_offset : GCCBuiltin<"__amdil_get_printf_offset">,
328       Intrinsic<[llvm_i32_ty], []>;
329   def int_AMDIL_get_printf_size : GCCBuiltin<"__amdil_get_printf_size">,
330       Intrinsic<[llvm_i32_ty], []>;
331
332 /// Intrinsics for atomic instructions with no return value
333 /// Signed 32 bit integer atomics for global address space
334 def int_AMDIL_atomic_add_gi32_noret : GCCBuiltin<"__atomic_add_gi32_noret">,
335     BinaryAtomicIntNoRet;
336 def int_AMDIL_atomic_sub_gi32_noret : GCCBuiltin<"__atomic_sub_gi32_noret">,
337     BinaryAtomicIntNoRet;
338 def int_AMDIL_atomic_rsub_gi32_noret : GCCBuiltin<"__atomic_rsub_gi32_noret">,
339     BinaryAtomicIntNoRet;
340 def int_AMDIL_atomic_xchg_gi32_noret : GCCBuiltin<"__atomic_xchg_gi32_noret">,
341     BinaryAtomicIntNoRet;
342 def int_AMDIL_atomic_inc_gi32_noret : GCCBuiltin<"__atomic_inc_gi32_noret">,
343     BinaryAtomicIntNoRet;
344 def int_AMDIL_atomic_dec_gi32_noret : GCCBuiltin<"__atomic_dec_gi32_noret">,
345     BinaryAtomicIntNoRet;
346 def int_AMDIL_atomic_cmpxchg_gi32_noret : GCCBuiltin<"__atomic_cmpxchg_gi32_noret">,
347     TernaryAtomicIntNoRet;
348 def int_AMDIL_atomic_min_gi32_noret : GCCBuiltin<"__atomic_min_gi32_noret">,
349     BinaryAtomicIntNoRet;
350 def int_AMDIL_atomic_max_gi32_noret : GCCBuiltin<"__atomic_max_gi32_noret">,
351     BinaryAtomicIntNoRet;
352 def int_AMDIL_atomic_and_gi32_noret : GCCBuiltin<"__atomic_and_gi32_noret">,
353     BinaryAtomicIntNoRet;
354 def int_AMDIL_atomic_or_gi32_noret : GCCBuiltin<"__atomic_or_gi32_noret">,
355     BinaryAtomicIntNoRet;
356 def int_AMDIL_atomic_xor_gi32_noret : GCCBuiltin<"__atomic_xor_gi32_noret">,
357     BinaryAtomicIntNoRet;
358
359
360
361 /// Unsigned 32 bit integer atomics for global address space
362 def int_AMDIL_atomic_add_gu32_noret : GCCBuiltin<"__atomic_add_gu32_noret">,
363     BinaryAtomicIntNoRet;
364 def int_AMDIL_atomic_sub_gu32_noret : GCCBuiltin<"__atomic_sub_gu32_noret">,
365     BinaryAtomicIntNoRet;
366 def int_AMDIL_atomic_rsub_gu32_noret : GCCBuiltin<"__atomic_rsub_gu32_noret">,
367     BinaryAtomicIntNoRet;
368 def int_AMDIL_atomic_xchg_gu32_noret : GCCBuiltin<"__atomic_xchg_gu32_noret">,
369     BinaryAtomicIntNoRet;
370 def int_AMDIL_atomic_inc_gu32_noret : GCCBuiltin<"__atomic_inc_gu32_noret">,
371     BinaryAtomicIntNoRet;
372 def int_AMDIL_atomic_dec_gu32_noret : GCCBuiltin<"__atomic_dec_gu32_noret">,
373     BinaryAtomicIntNoRet;
374 def int_AMDIL_atomic_cmpxchg_gu32_noret : GCCBuiltin<"__atomic_cmpxchg_gu32_noret">,
375     TernaryAtomicIntNoRet;
376 def int_AMDIL_atomic_min_gu32_noret : GCCBuiltin<"__atomic_min_gu32_noret">,
377     BinaryAtomicIntNoRet;
378 def int_AMDIL_atomic_max_gu32_noret : GCCBuiltin<"__atomic_max_gu32_noret">,
379     BinaryAtomicIntNoRet;
380 def int_AMDIL_atomic_and_gu32_noret : GCCBuiltin<"__atomic_and_gu32_noret">,
381     BinaryAtomicIntNoRet;
382 def int_AMDIL_atomic_or_gu32_noret : GCCBuiltin<"__atomic_or_gu32_noret">,
383     BinaryAtomicIntNoRet;
384 def int_AMDIL_atomic_xor_gu32_noret : GCCBuiltin<"__atomic_xor_gu32_noret">,
385     BinaryAtomicIntNoRet;
386
387
388 /// Intrinsics for atomic instructions with a return value
389 /// Signed 32 bit integer atomics for global address space
390 def int_AMDIL_atomic_add_gi32 : GCCBuiltin<"__atomic_add_gi32">,
391     BinaryAtomicInt;
392 def int_AMDIL_atomic_sub_gi32 : GCCBuiltin<"__atomic_sub_gi32">,
393     BinaryAtomicInt;
394 def int_AMDIL_atomic_rsub_gi32 : GCCBuiltin<"__atomic_rsub_gi32">,
395     BinaryAtomicInt;
396 def int_AMDIL_atomic_xchg_gi32 : GCCBuiltin<"__atomic_xchg_gi32">,
397     BinaryAtomicInt;
398 def int_AMDIL_atomic_inc_gi32 : GCCBuiltin<"__atomic_inc_gi32">,
399     BinaryAtomicInt;
400 def int_AMDIL_atomic_dec_gi32 : GCCBuiltin<"__atomic_dec_gi32">,
401     BinaryAtomicInt;
402 def int_AMDIL_atomic_cmpxchg_gi32 : GCCBuiltin<"__atomic_cmpxchg_gi32">,
403     TernaryAtomicInt;
404 def int_AMDIL_atomic_min_gi32 : GCCBuiltin<"__atomic_min_gi32">,
405     BinaryAtomicInt;
406 def int_AMDIL_atomic_max_gi32 : GCCBuiltin<"__atomic_max_gi32">,
407     BinaryAtomicInt;
408 def int_AMDIL_atomic_and_gi32 : GCCBuiltin<"__atomic_and_gi32">,
409     BinaryAtomicInt;
410 def int_AMDIL_atomic_or_gi32 : GCCBuiltin<"__atomic_or_gi32">,
411     BinaryAtomicInt;
412 def int_AMDIL_atomic_xor_gi32 : GCCBuiltin<"__atomic_xor_gi32">,
413     BinaryAtomicInt;
414
415 /// 32 bit float atomics required by OpenCL
416 def int_AMDIL_atomic_xchg_gf32 : GCCBuiltin<"__atomic_xchg_gf32">,
417     BinaryAtomicInt;
418 def int_AMDIL_atomic_xchg_gf32_noret : GCCBuiltin<"__atomic_xchg_gf32_noret">,
419     BinaryAtomicIntNoRet;
420
421 /// Unsigned 32 bit integer atomics for global address space
422 def int_AMDIL_atomic_add_gu32 : GCCBuiltin<"__atomic_add_gu32">,
423     BinaryAtomicInt;
424 def int_AMDIL_atomic_sub_gu32 : GCCBuiltin<"__atomic_sub_gu32">,
425     BinaryAtomicInt;
426 def int_AMDIL_atomic_rsub_gu32 : GCCBuiltin<"__atomic_rsub_gu32">,
427     BinaryAtomicInt;
428 def int_AMDIL_atomic_xchg_gu32 : GCCBuiltin<"__atomic_xchg_gu32">,
429     BinaryAtomicInt;
430 def int_AMDIL_atomic_inc_gu32 : GCCBuiltin<"__atomic_inc_gu32">,
431     BinaryAtomicInt;
432 def int_AMDIL_atomic_dec_gu32 : GCCBuiltin<"__atomic_dec_gu32">,
433     BinaryAtomicInt;
434 def int_AMDIL_atomic_cmpxchg_gu32 : GCCBuiltin<"__atomic_cmpxchg_gu32">,
435     TernaryAtomicInt;
436 def int_AMDIL_atomic_min_gu32 : GCCBuiltin<"__atomic_min_gu32">,
437     BinaryAtomicInt;
438 def int_AMDIL_atomic_max_gu32 : GCCBuiltin<"__atomic_max_gu32">,
439     BinaryAtomicInt;
440 def int_AMDIL_atomic_and_gu32 : GCCBuiltin<"__atomic_and_gu32">,
441     BinaryAtomicInt;
442 def int_AMDIL_atomic_or_gu32 : GCCBuiltin<"__atomic_or_gu32">,
443     BinaryAtomicInt;
444 def int_AMDIL_atomic_xor_gu32 : GCCBuiltin<"__atomic_xor_gu32">,
445     BinaryAtomicInt;
446
447
448 /// Intrinsics for atomic instructions with no return value
449 /// Signed 32 bit integer atomics for local address space
450 def int_AMDIL_atomic_add_li32_noret : GCCBuiltin<"__atomic_add_li32_noret">,
451     BinaryAtomicIntNoRet;
452 def int_AMDIL_atomic_sub_li32_noret : GCCBuiltin<"__atomic_sub_li32_noret">,
453     BinaryAtomicIntNoRet;
454 def int_AMDIL_atomic_rsub_li32_noret : GCCBuiltin<"__atomic_rsub_li32_noret">,
455     BinaryAtomicIntNoRet;
456 def int_AMDIL_atomic_xchg_li32_noret : GCCBuiltin<"__atomic_xchg_li32_noret">,
457     BinaryAtomicIntNoRet;
458 def int_AMDIL_atomic_inc_li32_noret : GCCBuiltin<"__atomic_inc_li32_noret">,
459     BinaryAtomicIntNoRet;
460 def int_AMDIL_atomic_dec_li32_noret : GCCBuiltin<"__atomic_dec_li32_noret">,
461     BinaryAtomicIntNoRet;
462 def int_AMDIL_atomic_cmpxchg_li32_noret : GCCBuiltin<"__atomic_cmpxchg_li32_noret">,
463     TernaryAtomicIntNoRet;
464 def int_AMDIL_atomic_min_li32_noret : GCCBuiltin<"__atomic_min_li32_noret">,
465     BinaryAtomicIntNoRet;
466 def int_AMDIL_atomic_max_li32_noret : GCCBuiltin<"__atomic_max_li32_noret">,
467     BinaryAtomicIntNoRet;
468 def int_AMDIL_atomic_and_li32_noret : GCCBuiltin<"__atomic_and_li32_noret">,
469     BinaryAtomicIntNoRet;
470 def int_AMDIL_atomic_or_li32_noret : GCCBuiltin<"__atomic_or_li32_noret">,
471     BinaryAtomicIntNoRet;
472 def int_AMDIL_atomic_mskor_li32_noret : GCCBuiltin<"__atomic_mskor_li32_noret">,
473     TernaryAtomicIntNoRet;
474 def int_AMDIL_atomic_xor_li32_noret : GCCBuiltin<"__atomic_xor_li32_noret">,
475     BinaryAtomicIntNoRet;
476
477 /// Signed 32 bit integer atomics for region address space
478 def int_AMDIL_atomic_add_ri32_noret : GCCBuiltin<"__atomic_add_ri32_noret">,
479     BinaryAtomicIntNoRet;
480 def int_AMDIL_atomic_sub_ri32_noret : GCCBuiltin<"__atomic_sub_ri32_noret">,
481     BinaryAtomicIntNoRet;
482 def int_AMDIL_atomic_rsub_ri32_noret : GCCBuiltin<"__atomic_rsub_ri32_noret">,
483     BinaryAtomicIntNoRet;
484 def int_AMDIL_atomic_xchg_ri32_noret : GCCBuiltin<"__atomic_xchg_ri32_noret">,
485     BinaryAtomicIntNoRet;
486 def int_AMDIL_atomic_inc_ri32_noret : GCCBuiltin<"__atomic_inc_ri32_noret">,
487     BinaryAtomicIntNoRet;
488 def int_AMDIL_atomic_dec_ri32_noret : GCCBuiltin<"__atomic_dec_ri32_noret">,
489     BinaryAtomicIntNoRet;
490 def int_AMDIL_atomic_cmpxchg_ri32_noret : GCCBuiltin<"__atomic_cmpxchg_ri32_noret">,
491     TernaryAtomicIntNoRet;
492 def int_AMDIL_atomic_min_ri32_noret : GCCBuiltin<"__atomic_min_ri32_noret">,
493     BinaryAtomicIntNoRet;
494 def int_AMDIL_atomic_max_ri32_noret : GCCBuiltin<"__atomic_max_ri32_noret">,
495     BinaryAtomicIntNoRet;
496 def int_AMDIL_atomic_and_ri32_noret : GCCBuiltin<"__atomic_and_ri32_noret">,
497     BinaryAtomicIntNoRet;
498 def int_AMDIL_atomic_or_ri32_noret : GCCBuiltin<"__atomic_or_ri32_noret">,
499     BinaryAtomicIntNoRet;
500 def int_AMDIL_atomic_mskor_ri32_noret : GCCBuiltin<"__atomic_mskor_ri32_noret">,
501     TernaryAtomicIntNoRet;
502 def int_AMDIL_atomic_xor_ri32_noret : GCCBuiltin<"__atomic_xor_ri32_noret">,
503     BinaryAtomicIntNoRet;
504
505
506
507 /// Unsigned 32 bit integer atomics for local address space
508 def int_AMDIL_atomic_add_lu32_noret : GCCBuiltin<"__atomic_add_lu32_noret">,
509     BinaryAtomicIntNoRet;
510 def int_AMDIL_atomic_sub_lu32_noret : GCCBuiltin<"__atomic_sub_lu32_noret">,
511     BinaryAtomicIntNoRet;
512 def int_AMDIL_atomic_rsub_lu32_noret : GCCBuiltin<"__atomic_rsub_lu32_noret">,
513     BinaryAtomicIntNoRet;
514 def int_AMDIL_atomic_xchg_lu32_noret : GCCBuiltin<"__atomic_xchg_lu32_noret">,
515     BinaryAtomicIntNoRet;
516 def int_AMDIL_atomic_inc_lu32_noret : GCCBuiltin<"__atomic_inc_lu32_noret">,
517     BinaryAtomicIntNoRet;
518 def int_AMDIL_atomic_dec_lu32_noret : GCCBuiltin<"__atomic_dec_lu32_noret">,
519     BinaryAtomicIntNoRet;
520 def int_AMDIL_atomic_cmpxchg_lu32_noret : GCCBuiltin<"__atomic_cmpxchg_lu32_noret">,
521     TernaryAtomicIntNoRet;
522 def int_AMDIL_atomic_min_lu32_noret : GCCBuiltin<"__atomic_min_lu32_noret">,
523     BinaryAtomicIntNoRet;
524 def int_AMDIL_atomic_max_lu32_noret : GCCBuiltin<"__atomic_max_lu32_noret">,
525     BinaryAtomicIntNoRet;
526 def int_AMDIL_atomic_and_lu32_noret : GCCBuiltin<"__atomic_and_lu32_noret">,
527     BinaryAtomicIntNoRet;
528 def int_AMDIL_atomic_or_lu32_noret : GCCBuiltin<"__atomic_or_lu32_noret">,
529     BinaryAtomicIntNoRet;
530 def int_AMDIL_atomic_mskor_lu32_noret : GCCBuiltin<"__atomic_mskor_lu32_noret">,
531     TernaryAtomicIntNoRet;
532 def int_AMDIL_atomic_xor_lu32_noret : GCCBuiltin<"__atomic_xor_lu32_noret">,
533     BinaryAtomicIntNoRet;
534
535 /// Unsigned 32 bit integer atomics for region address space
536 def int_AMDIL_atomic_add_ru32_noret : GCCBuiltin<"__atomic_add_ru32_noret">,
537     BinaryAtomicIntNoRet;
538 def int_AMDIL_atomic_sub_ru32_noret : GCCBuiltin<"__atomic_sub_ru32_noret">,
539     BinaryAtomicIntNoRet;
540 def int_AMDIL_atomic_rsub_ru32_noret : GCCBuiltin<"__atomic_rsub_ru32_noret">,
541     BinaryAtomicIntNoRet;
542 def int_AMDIL_atomic_xchg_ru32_noret : GCCBuiltin<"__atomic_xchg_ru32_noret">,
543     BinaryAtomicIntNoRet;
544 def int_AMDIL_atomic_inc_ru32_noret : GCCBuiltin<"__atomic_inc_ru32_noret">,
545     BinaryAtomicIntNoRet;
546 def int_AMDIL_atomic_dec_ru32_noret : GCCBuiltin<"__atomic_dec_ru32_noret">,
547     BinaryAtomicIntNoRet;
548 def int_AMDIL_atomic_cmpxchg_ru32_noret : GCCBuiltin<"__atomic_cmpxchg_ru32_noret">,
549     TernaryAtomicIntNoRet;
550 def int_AMDIL_atomic_min_ru32_noret : GCCBuiltin<"__atomic_min_ru32_noret">,
551     BinaryAtomicIntNoRet;
552 def int_AMDIL_atomic_max_ru32_noret : GCCBuiltin<"__atomic_max_ru32_noret">,
553     BinaryAtomicIntNoRet;
554 def int_AMDIL_atomic_and_ru32_noret : GCCBuiltin<"__atomic_and_ru32_noret">,
555     BinaryAtomicIntNoRet;
556 def int_AMDIL_atomic_or_ru32_noret : GCCBuiltin<"__atomic_or_ru32_noret">,
557     BinaryAtomicIntNoRet;
558 def int_AMDIL_atomic_mskor_ru32_noret : GCCBuiltin<"__atomic_mskor_ru32_noret">,
559     TernaryAtomicIntNoRet;
560 def int_AMDIL_atomic_xor_ru32_noret : GCCBuiltin<"__atomic_xor_ru32_noret">,
561     BinaryAtomicIntNoRet;
562
563 def int_AMDIL_get_cycle_count : GCCBuiltin<"__amdil_get_cycle_count">,
564     VoidIntLong;
565
566 def int_AMDIL_compute_unit_id : GCCBuiltin<"__amdil_compute_unit_id">,
567     VoidIntInt;
568
569 def int_AMDIL_wavefront_id : GCCBuiltin<"__amdil_wavefront_id">,
570     VoidIntInt;
571
572
573 /// Intrinsics for atomic instructions with a return value
574 /// Signed 32 bit integer atomics for local address space
575 def int_AMDIL_atomic_add_li32 : GCCBuiltin<"__atomic_add_li32">,
576     BinaryAtomicInt;
577 def int_AMDIL_atomic_sub_li32 : GCCBuiltin<"__atomic_sub_li32">,
578     BinaryAtomicInt;
579 def int_AMDIL_atomic_rsub_li32 : GCCBuiltin<"__atomic_rsub_li32">,
580     BinaryAtomicInt;
581 def int_AMDIL_atomic_xchg_li32 : GCCBuiltin<"__atomic_xchg_li32">,
582     BinaryAtomicInt;
583 def int_AMDIL_atomic_inc_li32 : GCCBuiltin<"__atomic_inc_li32">,
584     BinaryAtomicInt;
585 def int_AMDIL_atomic_dec_li32 : GCCBuiltin<"__atomic_dec_li32">,
586     BinaryAtomicInt;
587 def int_AMDIL_atomic_cmpxchg_li32 : GCCBuiltin<"__atomic_cmpxchg_li32">,
588     TernaryAtomicInt;
589 def int_AMDIL_atomic_min_li32 : GCCBuiltin<"__atomic_min_li32">,
590     BinaryAtomicInt;
591 def int_AMDIL_atomic_max_li32 : GCCBuiltin<"__atomic_max_li32">,
592     BinaryAtomicInt;
593 def int_AMDIL_atomic_and_li32 : GCCBuiltin<"__atomic_and_li32">,
594     BinaryAtomicInt;
595 def int_AMDIL_atomic_or_li32 : GCCBuiltin<"__atomic_or_li32">,
596     BinaryAtomicInt;
597 def int_AMDIL_atomic_mskor_li32 : GCCBuiltin<"__atomic_mskor_li32">,
598     TernaryAtomicInt;
599 def int_AMDIL_atomic_xor_li32 : GCCBuiltin<"__atomic_xor_li32">,
600     BinaryAtomicInt;
601
602 /// Signed 32 bit integer atomics for region address space
603 def int_AMDIL_atomic_add_ri32 : GCCBuiltin<"__atomic_add_ri32">,
604     BinaryAtomicInt;
605 def int_AMDIL_atomic_sub_ri32 : GCCBuiltin<"__atomic_sub_ri32">,
606     BinaryAtomicInt;
607 def int_AMDIL_atomic_rsub_ri32 : GCCBuiltin<"__atomic_rsub_ri32">,
608     BinaryAtomicInt;
609 def int_AMDIL_atomic_xchg_ri32 : GCCBuiltin<"__atomic_xchg_ri32">,
610     BinaryAtomicInt;
611 def int_AMDIL_atomic_inc_ri32 : GCCBuiltin<"__atomic_inc_ri32">,
612     BinaryAtomicInt;
613 def int_AMDIL_atomic_dec_ri32 : GCCBuiltin<"__atomic_dec_ri32">,
614     BinaryAtomicInt;
615 def int_AMDIL_atomic_cmpxchg_ri32 : GCCBuiltin<"__atomic_cmpxchg_ri32">,
616     TernaryAtomicInt;
617 def int_AMDIL_atomic_min_ri32 : GCCBuiltin<"__atomic_min_ri32">,
618     BinaryAtomicInt;
619 def int_AMDIL_atomic_max_ri32 : GCCBuiltin<"__atomic_max_ri32">,
620     BinaryAtomicInt;
621 def int_AMDIL_atomic_and_ri32 : GCCBuiltin<"__atomic_and_ri32">,
622     BinaryAtomicInt;
623 def int_AMDIL_atomic_or_ri32 : GCCBuiltin<"__atomic_or_ri32">,
624     BinaryAtomicInt;
625 def int_AMDIL_atomic_mskor_ri32 : GCCBuiltin<"__atomic_mskor_ri32">,
626     TernaryAtomicInt;
627 def int_AMDIL_atomic_xor_ri32 : GCCBuiltin<"__atomic_xor_ri32">,
628     BinaryAtomicInt;
629
630 /// 32 bit float atomics required by OpenCL
631 def int_AMDIL_atomic_xchg_lf32 : GCCBuiltin<"__atomic_xchg_lf32">,
632     BinaryAtomicInt;
633 def int_AMDIL_atomic_xchg_lf32_noret : GCCBuiltin<"__atomic_xchg_lf32_noret">,
634     BinaryAtomicIntNoRet;
635 def int_AMDIL_atomic_xchg_rf32 : GCCBuiltin<"__atomic_xchg_rf32">,
636     BinaryAtomicInt;
637 def int_AMDIL_atomic_xchg_rf32_noret : GCCBuiltin<"__atomic_xchg_rf32_noret">,
638     BinaryAtomicIntNoRet;
639
640 /// Unsigned 32 bit integer atomics for local address space
641 def int_AMDIL_atomic_add_lu32 : GCCBuiltin<"__atomic_add_lu32">,
642     BinaryAtomicInt;
643 def int_AMDIL_atomic_sub_lu32 : GCCBuiltin<"__atomic_sub_lu32">,
644     BinaryAtomicInt;
645 def int_AMDIL_atomic_rsub_lu32 : GCCBuiltin<"__atomic_rsub_lu32">,
646     BinaryAtomicInt;
647 def int_AMDIL_atomic_xchg_lu32 : GCCBuiltin<"__atomic_xchg_lu32">,
648     BinaryAtomicInt;
649 def int_AMDIL_atomic_inc_lu32 : GCCBuiltin<"__atomic_inc_lu32">,
650     BinaryAtomicInt;
651 def int_AMDIL_atomic_dec_lu32 : GCCBuiltin<"__atomic_dec_lu32">,
652     BinaryAtomicInt;
653 def int_AMDIL_atomic_cmpxchg_lu32 : GCCBuiltin<"__atomic_cmpxchg_lu32">,
654     TernaryAtomicInt;
655 def int_AMDIL_atomic_min_lu32 : GCCBuiltin<"__atomic_min_lu32">,
656     BinaryAtomicInt;
657 def int_AMDIL_atomic_max_lu32 : GCCBuiltin<"__atomic_max_lu32">,
658     BinaryAtomicInt;
659 def int_AMDIL_atomic_and_lu32 : GCCBuiltin<"__atomic_and_lu32">,
660     BinaryAtomicInt;
661 def int_AMDIL_atomic_or_lu32 : GCCBuiltin<"__atomic_or_lu32">,
662     BinaryAtomicInt;
663 def int_AMDIL_atomic_mskor_lu32 : GCCBuiltin<"__atomic_mskor_lu32">,
664     TernaryAtomicInt;
665 def int_AMDIL_atomic_xor_lu32 : GCCBuiltin<"__atomic_xor_lu32">,
666     BinaryAtomicInt;
667
668 /// Unsigned 32 bit integer atomics for region address space
669 def int_AMDIL_atomic_add_ru32 : GCCBuiltin<"__atomic_add_ru32">,
670     BinaryAtomicInt;
671 def int_AMDIL_atomic_sub_ru32 : GCCBuiltin<"__atomic_sub_ru32">,
672     BinaryAtomicInt;
673 def int_AMDIL_atomic_rsub_ru32 : GCCBuiltin<"__atomic_rsub_ru32">,
674     BinaryAtomicInt;
675 def int_AMDIL_atomic_xchg_ru32 : GCCBuiltin<"__atomic_xchg_ru32">,
676     BinaryAtomicInt;
677 def int_AMDIL_atomic_inc_ru32 : GCCBuiltin<"__atomic_inc_ru32">,
678     BinaryAtomicInt;
679 def int_AMDIL_atomic_dec_ru32 : GCCBuiltin<"__atomic_dec_ru32">,
680     BinaryAtomicInt;
681 def int_AMDIL_atomic_cmpxchg_ru32 : GCCBuiltin<"__atomic_cmpxchg_ru32">,
682     TernaryAtomicInt;
683 def int_AMDIL_atomic_min_ru32 : GCCBuiltin<"__atomic_min_ru32">,
684     BinaryAtomicInt;
685 def int_AMDIL_atomic_max_ru32 : GCCBuiltin<"__atomic_max_ru32">,
686     BinaryAtomicInt;
687 def int_AMDIL_atomic_and_ru32 : GCCBuiltin<"__atomic_and_ru32">,
688     BinaryAtomicInt;
689 def int_AMDIL_atomic_or_ru32 : GCCBuiltin<"__atomic_or_ru32">,
690     BinaryAtomicInt;
691 def int_AMDIL_atomic_mskor_ru32 : GCCBuiltin<"__atomic_mskor_ru32">,
692     TernaryAtomicInt;
693 def int_AMDIL_atomic_xor_ru32 : GCCBuiltin<"__atomic_xor_ru32">,
694     BinaryAtomicInt;
695
696 /// Semaphore signal/wait/init
697 def int_AMDIL_semaphore_init : GCCBuiltin<"__amdil_semaphore_init">,
698     Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty]>;
699 def int_AMDIL_semaphore_wait : GCCBuiltin<"__amdil_semaphore_wait">,
700     Intrinsic<[], [llvm_ptr_ty]>;
701 def int_AMDIL_semaphore_signal : GCCBuiltin<"__amdil_semaphore_signal">,
702     Intrinsic<[], [llvm_ptr_ty]>;
703 def int_AMDIL_semaphore_size   : GCCBuiltin<"__amdil_max_semaphore_size">,
704     Intrinsic<[llvm_i32_ty], []>;
705 }