• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16// DEF_MIR_INTRINSIC(STR, NAME, INTRN_CLASS, RETURN_TYPE, ARG0, ARG1, ARG2, ARG3, ARG4, ARG5)
17
18DEF_MIR_INTRINSIC(C_strcmp,\
19                  "strcmp", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyI32, kArgTyPtr, kArgTyPtr)
20DEF_MIR_INTRINSIC(C_strncmp,\
21                  "strncmp", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyI32, kArgTyPtr, kArgTyPtr, kArgTyU32)
22DEF_MIR_INTRINSIC(C_strcpy,\
23                  "strcpy", 0, kArgTyVoid, kArgTyPtr, kArgTyPtr)
24DEF_MIR_INTRINSIC(C_strncpy,\
25                  "strncpy", 0, kArgTyVoid, kArgTyPtr, kArgTyPtr, kArgTyU64)
26DEF_MIR_INTRINSIC(C_strlen,\
27                  "strlen", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyU64, kArgTyPtr)
28DEF_MIR_INTRINSIC(C_strchr,\
29                  "strchr", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyPtr, kArgTyPtr, kArgTyU32)
30DEF_MIR_INTRINSIC(C_strrchr,\
31                  "strrchr", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyPtr, kArgTyPtr, kArgTyU32)
32DEF_MIR_INTRINSIC(C_memcmp,\
33                  "memcmp", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyI32, kArgTyPtr, kArgTyPtr, kArgTyU64)
34DEF_MIR_INTRINSIC(C_memcpy,\
35                  "memcpy", 0, kArgTyVoid, kArgTyPtr, kArgTyPtr, kArgTyU64)
36DEF_MIR_INTRINSIC(C_memmove,\
37                  "memmove", 0, kArgTyVoid, kArgTyPtr, kArgTyPtr, kArgTyU64)
38DEF_MIR_INTRINSIC(C_memset,\
39                  "memset", 0, kArgTyVoid, kArgTyPtr, kArgTyI32, kArgTyU64)
40DEF_MIR_INTRINSIC(C_acosf,\
41                  "acosf", INTRNISPURE, kArgTyF32, kArgTyF32)
42DEF_MIR_INTRINSIC(C_asinf,\
43                  "asinf", INTRNISPURE, kArgTyF32, kArgTyF32)
44DEF_MIR_INTRINSIC(C_atanf,\
45                  "atanf", INTRNISPURE, kArgTyF32, kArgTyF32)
46DEF_MIR_INTRINSIC(C_cosf,\
47                  "cosf", INTRNISPURE, kArgTyF32, kArgTyF32)
48DEF_MIR_INTRINSIC(C_coshf,\
49                  "coshf", INTRNISPURE, kArgTyF32, kArgTyF32)
50DEF_MIR_INTRINSIC(C_expf,\
51                  "expf", INTRNISPURE, kArgTyF32, kArgTyF32)
52DEF_MIR_INTRINSIC(C_logf,\
53                  "logf", INTRNISPURE, kArgTyF32, kArgTyF32)
54DEF_MIR_INTRINSIC(C_log10f,\
55                  "log10f", INTRNISPURE, kArgTyF32, kArgTyF32)
56DEF_MIR_INTRINSIC(C_sinf,\
57                  "sinf", INTRNISPURE, kArgTyF32, kArgTyF32)
58DEF_MIR_INTRINSIC(C_sinhf,\
59                  "sinhf", INTRNISPURE, kArgTyF32, kArgTyF32)
60DEF_MIR_INTRINSIC(C_acos,\
61                  "acos", INTRNISPURE, kArgTyF64, kArgTyF64)
62DEF_MIR_INTRINSIC(C_asin,\
63                  "asin", INTRNISPURE, kArgTyF64, kArgTyF64)
64DEF_MIR_INTRINSIC(C_atan,\
65                  "atan", INTRNISPURE, kArgTyF64, kArgTyF64)
66DEF_MIR_INTRINSIC(C_cos,\
67                  "cos", INTRNISPURE, kArgTyF64, kArgTyF64)
68DEF_MIR_INTRINSIC(C_cosh,\
69                  "cosh", INTRNISPURE, kArgTyF64, kArgTyF64)
70DEF_MIR_INTRINSIC(C_exp,\
71                  "exp", INTRNISPURE, kArgTyF64, kArgTyF64)
72DEF_MIR_INTRINSIC(C_log,\
73                  "log", INTRNISPURE, kArgTyF64, kArgTyF64)
74DEF_MIR_INTRINSIC(C_log10,\
75                  "log10", INTRNISPURE, kArgTyF64, kArgTyF64)
76DEF_MIR_INTRINSIC(C_sin,\
77                  "sin", INTRNISPURE, kArgTyF64, kArgTyF64)
78DEF_MIR_INTRINSIC(C_sinh,\
79                  "sinh", INTRNISPURE, kArgTyF64, kArgTyF64)
80DEF_MIR_INTRINSIC(C_ffs,\
81                  "ffs", INTRNISPURE, kArgTyI32, kArgTyI32)
82DEF_MIR_INTRINSIC(C_va_start,\
83                  "sinh", INTRNISPURE | INTRNISSPECIAL, kArgTyVoid, kArgTyPtr, kArgTyI32)
84DEF_MIR_INTRINSIC(C_constant_p,\
85                  "sinh", 0, kArgTyI32, kArgTyDynany)
86DEF_MIR_INTRINSIC(C_clz32,\
87                  "sinh", INTRNISPURE, kArgTyI32, kArgTyU32)
88DEF_MIR_INTRINSIC(C_clz64,\
89                  "sinh", INTRNISPURE, kArgTyI32, kArgTyU64)
90DEF_MIR_INTRINSIC(C_ctz32,\
91                  "sinh", INTRNISPURE, kArgTyI32, kArgTyU32)
92DEF_MIR_INTRINSIC(C_ctz64,\
93                  "sinh", INTRNISPURE, kArgTyI32, kArgTyU64)
94DEF_MIR_INTRINSIC(C_popcount32,\
95                  "popcount32", INTRNISPURE, kArgTyI32, kArgTyU32)
96DEF_MIR_INTRINSIC(C_popcount64,\
97                  "popcount64", INTRNISPURE, kArgTyI32, kArgTyU64)
98DEF_MIR_INTRINSIC(C_parity32,\
99                  "parity32", INTRNISPURE, kArgTyI32, kArgTyU32)
100DEF_MIR_INTRINSIC(C_parity64,\
101                  "parity64", INTRNISPURE, kArgTyI32, kArgTyU64)
102DEF_MIR_INTRINSIC(C_clrsb32,\
103                  "clrsb32", INTRNISPURE, kArgTyI32, kArgTyU32)
104DEF_MIR_INTRINSIC(C_clrsb64,\
105                  "clrsb64", INTRNISPURE, kArgTyI32, kArgTyU64)
106DEF_MIR_INTRINSIC(C_isaligned,\
107                  "isaligned", INTRNISPURE, kArgTyU1, kArgTyPtr, kArgTyU64)
108DEF_MIR_INTRINSIC(C_alignup,\
109                  "alignup", INTRNISPURE, kArgTyU1, kArgTyPtr, kArgTyU64)
110DEF_MIR_INTRINSIC(C_aligndown,\
111                  "aligndown", INTRNISPURE, kArgTyU1, kArgTyPtr, kArgTyU64)
112DEF_MIR_INTRINSIC(C_rev16_2,\
113                  "rev16", INTRNISPURE | INTRNNOSIDEEFFECT, kArgTyI16, kArgTyI16)
114DEF_MIR_INTRINSIC(C_rev_4,\
115                  "rev", INTRNISPURE | INTRNNOSIDEEFFECT, kArgTyI32, kArgTyI32)
116DEF_MIR_INTRINSIC(C_rev_8,\
117                  "rev", INTRNISPURE | INTRNNOSIDEEFFECT, kArgTyI64, kArgTyI64)
118DEF_MIR_INTRINSIC(C_stack_save,\
119                  "stack_save", INTRNISPURE | INTRNISSPECIAL, kArgTyPtr)
120DEF_MIR_INTRINSIC(C_stack_restore,\
121                  "stack_restore", INTRNISPURE | INTRNISSPECIAL, kArgTyPtr)
122// sync
123DEF_MIR_INTRINSIC(C___sync_add_and_fetch_1,\
124                  "__sync_add_and_fetch_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
125DEF_MIR_INTRINSIC(C___sync_add_and_fetch_2,\
126                  "__sync_add_and_fetch_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
127DEF_MIR_INTRINSIC(C___sync_add_and_fetch_4,\
128                  "__sync_add_and_fetch_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
129DEF_MIR_INTRINSIC(C___sync_add_and_fetch_8,\
130                  "__sync_add_and_fetch_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
131DEF_MIR_INTRINSIC(C___sync_sub_and_fetch_1,\
132                  "__sync_sub_and_fetch_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
133DEF_MIR_INTRINSIC(C___sync_sub_and_fetch_2,\
134                  "__sync_sub_and_fetch_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
135DEF_MIR_INTRINSIC(C___sync_sub_and_fetch_4,\
136                  "__sync_sub_and_fetch_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
137DEF_MIR_INTRINSIC(C___sync_sub_and_fetch_8,\
138                  "__sync_sub_and_fetch_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
139DEF_MIR_INTRINSIC(C___sync_fetch_and_add_1,\
140                  "__sync_fetch_and_add_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
141DEF_MIR_INTRINSIC(C___sync_fetch_and_add_2,\
142                  "__sync_fetch_and_add_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
143DEF_MIR_INTRINSIC(C___sync_fetch_and_add_4,\
144                  "__sync_fetch_and_add_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
145DEF_MIR_INTRINSIC(C___sync_fetch_and_add_8,\
146                  "__sync_fetch_and_add_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
147DEF_MIR_INTRINSIC(C___sync_fetch_and_sub_1,\
148                  "__sync_fetch_and_sub_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
149DEF_MIR_INTRINSIC(C___sync_fetch_and_sub_2,\
150                  "__sync_fetch_and_sub_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
151DEF_MIR_INTRINSIC(C___sync_fetch_and_sub_4,\
152                  "__sync_fetch_and_sub_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
153DEF_MIR_INTRINSIC(C___sync_fetch_and_sub_8,\
154                  "__sync_fetch_and_sub_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
155DEF_MIR_INTRINSIC(C___sync_bool_compare_and_swap_1,\
156                  "__sync_bool_compare_and_swap_1", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyU8, kArgTyU8)
157DEF_MIR_INTRINSIC(C___sync_bool_compare_and_swap_2,\
158                  "__sync_bool_compare_and_swap_2", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyU16, kArgTyU16)
159DEF_MIR_INTRINSIC(C___sync_bool_compare_and_swap_4,\
160                  "__sync_bool_compare_and_swap_4", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyU32, kArgTyU32)
161DEF_MIR_INTRINSIC(C___sync_bool_compare_and_swap_8,\
162                  "__sync_bool_compare_and_swap_8", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyU64, kArgTyU64)
163DEF_MIR_INTRINSIC(C___sync_val_compare_and_swap_1,\
164                  "__sync_val_compare_and_swap_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8, kArgTyU8)
165DEF_MIR_INTRINSIC(C___sync_val_compare_and_swap_2,\
166                  "__sync_val_compare_and_swap_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16, kArgTyU16)
167DEF_MIR_INTRINSIC(C___sync_val_compare_and_swap_4,\
168                  "__sync_val_compare_and_swap_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32, kArgTyU32)
169DEF_MIR_INTRINSIC(C___sync_val_compare_and_swap_8,\
170                  "__sync_val_compare_and_swap_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64, kArgTyU64)
171DEF_MIR_INTRINSIC(C___sync_lock_test_and_set_1,\
172                  "__sync_lock_test_and_set_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
173DEF_MIR_INTRINSIC(C___sync_lock_test_and_set_2,\
174                  "__sync_lock_test_and_set_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
175DEF_MIR_INTRINSIC(C___sync_lock_test_and_set_4,\
176                  "__sync_lock_test_and_set_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
177DEF_MIR_INTRINSIC(C___sync_lock_test_and_set_8,\
178                  "__sync_lock_test_and_set_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
179DEF_MIR_INTRINSIC(C___sync_lock_release_8,\
180                  "__sync_lock_release_8", INTRNATOMIC, kArgTyVoid, kArgTyPtr)
181DEF_MIR_INTRINSIC(C___sync_lock_release_4,\
182                  "__sync_lock_release_4", INTRNATOMIC, kArgTyVoid, kArgTyPtr)
183DEF_MIR_INTRINSIC(C___sync_lock_release_2,\
184                  "__sync_lock_release_2", INTRNATOMIC, kArgTyVoid, kArgTyPtr)
185DEF_MIR_INTRINSIC(C___sync_lock_release_1,\
186                  "__sync_lock_release_1", INTRNATOMIC, kArgTyVoid, kArgTyPtr)
187DEF_MIR_INTRINSIC(C___sync_fetch_and_and_1,\
188                  "__sync_fetch_and_and_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
189DEF_MIR_INTRINSIC(C___sync_fetch_and_and_2,\
190                  "__sync_fetch_and_and_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
191DEF_MIR_INTRINSIC(C___sync_fetch_and_and_4,\
192                  "__sync_fetch_and_and_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
193DEF_MIR_INTRINSIC(C___sync_fetch_and_and_8,\
194                  "__sync_fetch_and_and_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
195DEF_MIR_INTRINSIC(C___sync_fetch_and_or_1,\
196                  "__sync_fetch_and_or_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
197DEF_MIR_INTRINSIC(C___sync_fetch_and_or_2,\
198                  "__sync_fetch_and_or_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
199DEF_MIR_INTRINSIC(C___sync_fetch_and_or_4,\
200                  "__sync_fetch_and_or_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
201DEF_MIR_INTRINSIC(C___sync_fetch_and_or_8,\
202                  "__sync_fetch_and_or_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
203DEF_MIR_INTRINSIC(C___sync_fetch_and_xor_1,\
204                  "__sync_fetch_and_xor_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
205DEF_MIR_INTRINSIC(C___sync_fetch_and_xor_2,\
206                  "__sync_fetch_and_xor_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
207DEF_MIR_INTRINSIC(C___sync_fetch_and_xor_4,\
208                  "__sync_fetch_and_xor_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
209DEF_MIR_INTRINSIC(C___sync_fetch_and_xor_8,\
210                  "__sync_fetch_and_xor_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
211DEF_MIR_INTRINSIC(C___sync_fetch_and_nand_1,\
212                  "__sync_fetch_and_nand_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
213DEF_MIR_INTRINSIC(C___sync_fetch_and_nand_2,\
214                  "__sync_fetch_and_nand_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
215DEF_MIR_INTRINSIC(C___sync_fetch_and_nand_4,\
216                  "__sync_fetch_and_nand_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
217DEF_MIR_INTRINSIC(C___sync_fetch_and_nand_8,\
218                  "__sync_fetch_and_nand_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
219DEF_MIR_INTRINSIC(C___sync_and_and_fetch_1,\
220                  "__sync_and_and_fetch_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
221DEF_MIR_INTRINSIC(C___sync_and_and_fetch_2,\
222                  "__sync_and_and_fetch_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
223DEF_MIR_INTRINSIC(C___sync_and_and_fetch_4,\
224                  "__sync_and_and_fetch_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
225DEF_MIR_INTRINSIC(C___sync_and_and_fetch_8,\
226                  "__sync_and_and_fetch_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
227DEF_MIR_INTRINSIC(C___sync_or_and_fetch_1,\
228                  "__sync_or_and_fetch_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
229DEF_MIR_INTRINSIC(C___sync_or_and_fetch_2,\
230                  "__sync_or_and_fetch_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
231DEF_MIR_INTRINSIC(C___sync_or_and_fetch_4,\
232                  "__sync_or_and_fetch_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
233DEF_MIR_INTRINSIC(C___sync_or_and_fetch_8,\
234                  "__sync_or_and_fetch_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
235DEF_MIR_INTRINSIC(C___sync_xor_and_fetch_1,\
236                  "__sync_xor_and_fetch_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
237DEF_MIR_INTRINSIC(C___sync_xor_and_fetch_2,\
238                  "__sync_xor_and_fetch_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
239DEF_MIR_INTRINSIC(C___sync_xor_and_fetch_4,\
240                  "__sync_xor_and_fetch_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
241DEF_MIR_INTRINSIC(C___sync_xor_and_fetch_8,\
242                  "__sync_xor_and_fetch_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
243DEF_MIR_INTRINSIC(C___sync_nand_and_fetch_1,\
244                  "__sync_nand_and_fetch_1", INTRNATOMIC, kArgTyU8, kArgTyPtr, kArgTyU8)
245DEF_MIR_INTRINSIC(C___sync_nand_and_fetch_2,\
246                  "__sync_nand_and_fetch_2", INTRNATOMIC, kArgTyU16, kArgTyPtr, kArgTyU16)
247DEF_MIR_INTRINSIC(C___sync_nand_and_fetch_4,\
248                  "__sync_nand_and_fetch_4", INTRNATOMIC, kArgTyU32, kArgTyPtr, kArgTyU32)
249DEF_MIR_INTRINSIC(C___sync_nand_and_fetch_8,\
250                  "__sync_nand_and_fetch_8", INTRNATOMIC, kArgTyU64, kArgTyPtr, kArgTyU64)
251DEF_MIR_INTRINSIC(C___sync_synchronize,\
252                  "__sync_synchronize", INTRNATOMIC, kArgTyUndef)
253
254DEF_MIR_INTRINSIC(C__builtin_return_address,\
255                  "__builtin_return_address", INTRNISPURE, kArgTyPtr, kArgTyU32)
256DEF_MIR_INTRINSIC(C__builtin_extract_return_addr,\
257                  "__builtin_extract_return_addr", INTRNISPURE, kArgTyPtr, kArgTyPtr)
258DEF_MIR_INTRINSIC(C___builtin_expect,\
259                  "__builtin_expect", INTRNISPURE, kArgTyI32, kArgTyI32, kArgTyI32)
260DEF_MIR_INTRINSIC(C___builtin_division_exception,\
261                  "__builtin_division_exception", INTRNNOSIDEEFFECT | INTRNISPURE, kArgTyVoid, kArgTyI64)
262
263// atomic
264DEF_MIR_INTRINSIC(C___atomic_load_n,\
265                  "__atomic_load_n", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyI32)
266DEF_MIR_INTRINSIC(C___atomic_load,\
267                  "__atomic_load", INTRNATOMIC, kArgTyVoid, kArgTyPtr, kArgTyPtr, kArgTyI32)
268DEF_MIR_INTRINSIC(C___atomic_store_n,\
269                  "__atomic_store_n", INTRNATOMIC, kArgTyVoid, kArgTyPtr, kArgTyDynany, kArgTyI32)
270DEF_MIR_INTRINSIC(C___atomic_store,\
271                  "__atomic_store", INTRNATOMIC, kArgTyVoid, kArgTyPtr, kArgTyPtr, kArgTyI32)
272DEF_MIR_INTRINSIC(C___atomic_exchange_n,\
273                  "__atomic_exchange_n", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
274DEF_MIR_INTRINSIC(C___atomic_exchange,\
275                  "__atomic_exchange", INTRNATOMIC, kArgTyVoid, kArgTyPtr, kArgTyPtr, kArgTyPtr, kArgTyI32)
276DEF_MIR_INTRINSIC(C___atomic_add_fetch,\
277                  "__atomic_add_fetch", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
278DEF_MIR_INTRINSIC(C___atomic_sub_fetch,\
279                  "__atomic_sub_fetch", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
280DEF_MIR_INTRINSIC(C___atomic_and_fetch,\
281                  "__atomic_and_fetch", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
282DEF_MIR_INTRINSIC(C___atomic_xor_fetch,\
283                  "__atomic_xor_fetch", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
284DEF_MIR_INTRINSIC(C___atomic_or_fetch,\
285                  "__atomic_or_fetch", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
286DEF_MIR_INTRINSIC(C___atomic_nand_fetch,\
287                  "__atomic_nand_fetch", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
288DEF_MIR_INTRINSIC(C___atomic_fetch_add,\
289                  "__atomic_fetch_add", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
290DEF_MIR_INTRINSIC(C___atomic_fetch_sub,\
291                  "__atomic_fetch_sub", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
292DEF_MIR_INTRINSIC(C___atomic_fetch_and,\
293                  "__atomic_fetch_and", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
294DEF_MIR_INTRINSIC(C___atomic_fetch_xor,\
295                  "__atomic_fetch_xor", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
296DEF_MIR_INTRINSIC(C___atomic_fetch_or,\
297                  "__atomic_fetch_or", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
298DEF_MIR_INTRINSIC(C___atomic_fetch_nand,\
299                  "__atomic_fetch_nand", INTRNATOMIC, kArgTyDynany, kArgTyPtr, kArgTyDynany, kArgTyI32)
300DEF_MIR_INTRINSIC(C___atomic_test_and_set,\
301                  "__atomic_test_and_set", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyI32)
302DEF_MIR_INTRINSIC(C___atomic_clear,\
303                  "__atomic_clear", INTRNATOMIC, kArgTyVoid, kArgTyPtr, kArgTyI32)
304DEF_MIR_INTRINSIC(C___atomic_thread_fence,\
305                  "__atomic_thread_fence", INTRNATOMIC, kArgTyVoid, kArgTyI32)
306DEF_MIR_INTRINSIC(C___atomic_signal_fence,\
307                  "__atomic_signal_fence", INTRNATOMIC, kArgTyVoid, kArgTyI32)
308DEF_MIR_INTRINSIC(C___atomic_always_lock_free,\
309                  "__atomic_always_lock_free", INTRNATOMIC, kArgTyU1, kArgTyU64, kArgTyPtr)
310DEF_MIR_INTRINSIC(C___atomic_is_lock_free,\
311                  "__atomic_is_lock_free", INTRNATOMIC, kArgTyU1, kArgTyU64, kArgTyPtr)
312DEF_MIR_INTRINSIC(C___atomic_compare_exchange_n,\
313                  "__atomic_compare_exchange_n", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyPtr, kArgTyDynany, kArgTyU1, kArgTyI32, kArgTyI32)
314DEF_MIR_INTRINSIC(C___atomic_compare_exchange,\
315                  "__atomic_compare_exchange", INTRNATOMIC, kArgTyU1, kArgTyPtr, kArgTyPtr, kArgTyPtr, kArgTyU1, kArgTyI32, kArgTyI32)
316