radeonsi: initial WIP SI code
[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 }