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