github.com/goccy/go-jit@v0.0.0-20200514131505-ff78d45cf6af/internal/ccall/include/jit/jit-intrinsic.h (about) 1 /* 2 * jit-intrinsic.h - Support routines for JIT intrinsics. 3 * 4 * Copyright (C) 2004 Southern Storm Software, Pty Ltd. 5 * 6 * The libjit library is free software: you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public License 8 * as published by the Free Software Foundation, either version 2.1 of 9 * the License, or (at your option) any later version. 10 * 11 * The libjit library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with the libjit library. If not, see 18 * <http://www.gnu.org/licenses/>. 19 */ 20 21 #ifndef _JIT_INTRINSIC_H 22 #define _JIT_INTRINSIC_H 23 24 #include <jit/jit-common.h> 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 /* 31 * Perform operations on signed 32-bit integers. 32 */ 33 jit_int jit_int_add(jit_int value1, jit_int value2) JIT_NOTHROW; 34 jit_int jit_int_sub(jit_int value1, jit_int value2) JIT_NOTHROW; 35 jit_int jit_int_mul(jit_int value1, jit_int value2) JIT_NOTHROW; 36 jit_int jit_int_div 37 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 38 jit_int jit_int_rem 39 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 40 jit_int jit_int_add_ovf 41 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 42 jit_int jit_int_sub_ovf 43 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 44 jit_int jit_int_mul_ovf 45 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 46 jit_int jit_int_div_ovf 47 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 48 jit_int jit_int_rem_ovf 49 (jit_int *result, jit_int value1, jit_int value2) JIT_NOTHROW; 50 jit_int jit_int_neg(jit_int value1) JIT_NOTHROW; 51 jit_int jit_int_and(jit_int value1, jit_int value2) JIT_NOTHROW; 52 jit_int jit_int_or(jit_int value1, jit_int value2) JIT_NOTHROW; 53 jit_int jit_int_xor(jit_int value1, jit_int value2) JIT_NOTHROW; 54 jit_int jit_int_not(jit_int value1) JIT_NOTHROW; 55 jit_int jit_int_shl(jit_int value1, jit_uint value2) JIT_NOTHROW; 56 jit_int jit_int_shr(jit_int value1, jit_uint value2) JIT_NOTHROW; 57 jit_int jit_int_eq(jit_int value1, jit_int value2) JIT_NOTHROW; 58 jit_int jit_int_ne(jit_int value1, jit_int value2) JIT_NOTHROW; 59 jit_int jit_int_lt(jit_int value1, jit_int value2) JIT_NOTHROW; 60 jit_int jit_int_le(jit_int value1, jit_int value2) JIT_NOTHROW; 61 jit_int jit_int_gt(jit_int value1, jit_int value2) JIT_NOTHROW; 62 jit_int jit_int_ge(jit_int value1, jit_int value2) JIT_NOTHROW; 63 jit_int jit_int_cmp(jit_int value1, jit_int value2) JIT_NOTHROW; 64 jit_int jit_int_abs(jit_int value1) JIT_NOTHROW; 65 jit_int jit_int_min(jit_int value1, jit_int value2) JIT_NOTHROW; 66 jit_int jit_int_max(jit_int value1, jit_int value2) JIT_NOTHROW; 67 jit_int jit_int_sign(jit_int value1) JIT_NOTHROW; 68 69 /* 70 * Perform operations on unsigned 32-bit integers. 71 */ 72 jit_uint jit_uint_add(jit_uint value1, jit_uint value2) JIT_NOTHROW; 73 jit_uint jit_uint_sub(jit_uint value1, jit_uint value2) JIT_NOTHROW; 74 jit_uint jit_uint_mul(jit_uint value1, jit_uint value2) JIT_NOTHROW; 75 jit_int jit_uint_div 76 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 77 jit_int jit_uint_rem 78 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 79 jit_int jit_uint_add_ovf 80 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 81 jit_int jit_uint_sub_ovf 82 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 83 jit_int jit_uint_mul_ovf 84 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 85 jit_int jit_uint_div_ovf 86 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 87 jit_int jit_uint_rem_ovf 88 (jit_uint *result, jit_uint value1, jit_uint value2) JIT_NOTHROW; 89 jit_uint jit_uint_neg(jit_uint value1) JIT_NOTHROW; 90 jit_uint jit_uint_and(jit_uint value1, jit_uint value2) JIT_NOTHROW; 91 jit_uint jit_uint_or(jit_uint value1, jit_uint value2) JIT_NOTHROW; 92 jit_uint jit_uint_xor(jit_uint value1, jit_uint value2) JIT_NOTHROW; 93 jit_uint jit_uint_not(jit_uint value1) JIT_NOTHROW; 94 jit_uint jit_uint_shl(jit_uint value1, jit_uint value2) JIT_NOTHROW; 95 jit_uint jit_uint_shr(jit_uint value1, jit_uint value2) JIT_NOTHROW; 96 jit_int jit_uint_eq(jit_uint value1, jit_uint value2) JIT_NOTHROW; 97 jit_int jit_uint_ne(jit_uint value1, jit_uint value2) JIT_NOTHROW; 98 jit_int jit_uint_lt(jit_uint value1, jit_uint value2) JIT_NOTHROW; 99 jit_int jit_uint_le(jit_uint value1, jit_uint value2) JIT_NOTHROW; 100 jit_int jit_uint_gt(jit_uint value1, jit_uint value2) JIT_NOTHROW; 101 jit_int jit_uint_ge(jit_uint value1, jit_uint value2) JIT_NOTHROW; 102 jit_int jit_uint_cmp(jit_uint value1, jit_uint value2) JIT_NOTHROW; 103 jit_uint jit_uint_min(jit_uint value1, jit_uint value2) JIT_NOTHROW; 104 jit_uint jit_uint_max(jit_uint value1, jit_uint value2) JIT_NOTHROW; 105 106 /* 107 * Perform operations on signed 64-bit integers. 108 */ 109 jit_long jit_long_add(jit_long value1, jit_long value2) JIT_NOTHROW; 110 jit_long jit_long_sub(jit_long value1, jit_long value2) JIT_NOTHROW; 111 jit_long jit_long_mul(jit_long value1, jit_long value2) JIT_NOTHROW; 112 jit_int jit_long_div 113 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 114 jit_int jit_long_rem 115 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 116 jit_int jit_long_add_ovf 117 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 118 jit_int jit_long_sub_ovf 119 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 120 jit_int jit_long_mul_ovf 121 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 122 jit_int jit_long_div_ovf 123 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 124 jit_int jit_long_rem_ovf 125 (jit_long *result, jit_long value1, jit_long value2) JIT_NOTHROW; 126 jit_long jit_long_neg(jit_long value1) JIT_NOTHROW; 127 jit_long jit_long_and(jit_long value1, jit_long value2) JIT_NOTHROW; 128 jit_long jit_long_or(jit_long value1, jit_long value2) JIT_NOTHROW; 129 jit_long jit_long_xor(jit_long value1, jit_long value2) JIT_NOTHROW; 130 jit_long jit_long_not(jit_long value1) JIT_NOTHROW; 131 jit_long jit_long_shl(jit_long value1, jit_uint value2) JIT_NOTHROW; 132 jit_long jit_long_shr(jit_long value1, jit_uint value2) JIT_NOTHROW; 133 jit_int jit_long_eq(jit_long value1, jit_long value2) JIT_NOTHROW; 134 jit_int jit_long_ne(jit_long value1, jit_long value2) JIT_NOTHROW; 135 jit_int jit_long_lt(jit_long value1, jit_long value2) JIT_NOTHROW; 136 jit_int jit_long_le(jit_long value1, jit_long value2) JIT_NOTHROW; 137 jit_int jit_long_gt(jit_long value1, jit_long value2) JIT_NOTHROW; 138 jit_int jit_long_ge(jit_long value1, jit_long value2) JIT_NOTHROW; 139 jit_int jit_long_cmp(jit_long value1, jit_long value2) JIT_NOTHROW; 140 jit_long jit_long_abs(jit_long value1) JIT_NOTHROW; 141 jit_long jit_long_min(jit_long value1, jit_long value2) JIT_NOTHROW; 142 jit_long jit_long_max(jit_long value1, jit_long value2) JIT_NOTHROW; 143 jit_int jit_long_sign(jit_long value1) JIT_NOTHROW; 144 145 /* 146 * Perform operations on unsigned 64-bit integers. 147 */ 148 jit_ulong jit_ulong_add(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 149 jit_ulong jit_ulong_sub(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 150 jit_ulong jit_ulong_mul(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 151 jit_int jit_ulong_div 152 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 153 jit_int jit_ulong_rem 154 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 155 jit_int jit_ulong_add_ovf 156 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 157 jit_int jit_ulong_sub_ovf 158 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 159 jit_int jit_ulong_mul_ovf 160 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 161 jit_int jit_ulong_div_ovf 162 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 163 jit_int jit_ulong_rem_ovf 164 (jit_ulong *result, jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 165 jit_ulong jit_ulong_neg(jit_ulong value1) JIT_NOTHROW; 166 jit_ulong jit_ulong_and(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 167 jit_ulong jit_ulong_or(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 168 jit_ulong jit_ulong_xor(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 169 jit_ulong jit_ulong_not(jit_ulong value1) JIT_NOTHROW; 170 jit_ulong jit_ulong_shl(jit_ulong value1, jit_uint value2) JIT_NOTHROW; 171 jit_ulong jit_ulong_shr(jit_ulong value1, jit_uint value2) JIT_NOTHROW; 172 jit_int jit_ulong_eq(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 173 jit_int jit_ulong_ne(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 174 jit_int jit_ulong_lt(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 175 jit_int jit_ulong_le(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 176 jit_int jit_ulong_gt(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 177 jit_int jit_ulong_ge(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 178 jit_int jit_ulong_cmp(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 179 jit_ulong jit_ulong_min(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 180 jit_ulong jit_ulong_max(jit_ulong value1, jit_ulong value2) JIT_NOTHROW; 181 182 /* 183 * Perform operations on 32-bit floating-point values. 184 */ 185 jit_float32 jit_float32_add 186 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 187 jit_float32 jit_float32_sub 188 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 189 jit_float32 jit_float32_mul 190 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 191 jit_float32 jit_float32_div 192 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 193 jit_float32 jit_float32_rem 194 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 195 jit_float32 jit_float32_ieee_rem 196 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 197 jit_float32 jit_float32_neg(jit_float32 value1) JIT_NOTHROW; 198 jit_int jit_float32_eq(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 199 jit_int jit_float32_ne(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 200 jit_int jit_float32_lt(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 201 jit_int jit_float32_le(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 202 jit_int jit_float32_gt(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 203 jit_int jit_float32_ge(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 204 jit_int jit_float32_cmpl(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 205 jit_int jit_float32_cmpg(jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 206 jit_float32 jit_float32_acos(jit_float32 value1) JIT_NOTHROW; 207 jit_float32 jit_float32_asin(jit_float32 value1) JIT_NOTHROW; 208 jit_float32 jit_float32_atan(jit_float32 value1) JIT_NOTHROW; 209 jit_float32 jit_float32_atan2 210 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 211 jit_float32 jit_float32_ceil(jit_float32 value1) JIT_NOTHROW; 212 jit_float32 jit_float32_cos(jit_float32 value1) JIT_NOTHROW; 213 jit_float32 jit_float32_cosh(jit_float32 value1) JIT_NOTHROW; 214 jit_float32 jit_float32_exp(jit_float32 value1) JIT_NOTHROW; 215 jit_float32 jit_float32_floor(jit_float32 value1) JIT_NOTHROW; 216 jit_float32 jit_float32_log(jit_float32 value1) JIT_NOTHROW; 217 jit_float32 jit_float32_log10(jit_float32 value1) JIT_NOTHROW; 218 jit_float32 jit_float32_pow 219 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 220 jit_float32 jit_float32_rint(jit_float32 value1) JIT_NOTHROW; 221 jit_float32 jit_float32_round(jit_float32 value1) JIT_NOTHROW; 222 jit_float32 jit_float32_sin(jit_float32 value1) JIT_NOTHROW; 223 jit_float32 jit_float32_sinh(jit_float32 value1) JIT_NOTHROW; 224 jit_float32 jit_float32_sqrt(jit_float32 value1) JIT_NOTHROW; 225 jit_float32 jit_float32_tan(jit_float32 value1) JIT_NOTHROW; 226 jit_float32 jit_float32_tanh(jit_float32 value1) JIT_NOTHROW; 227 jit_float32 jit_float32_trunc(jit_float32 value1) JIT_NOTHROW; 228 jit_int jit_float32_is_finite(jit_float32 value) JIT_NOTHROW; 229 jit_int jit_float32_is_nan(jit_float32 value) JIT_NOTHROW; 230 jit_int jit_float32_is_inf(jit_float32 value) JIT_NOTHROW; 231 jit_float32 jit_float32_abs(jit_float32 value1) JIT_NOTHROW; 232 jit_float32 jit_float32_min 233 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 234 jit_float32 jit_float32_max 235 (jit_float32 value1, jit_float32 value2) JIT_NOTHROW; 236 jit_int jit_float32_sign(jit_float32 value1) JIT_NOTHROW; 237 238 /* 239 * Perform operations on 64-bit floating-point values. 240 */ 241 jit_float64 jit_float64_add 242 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 243 jit_float64 jit_float64_sub 244 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 245 jit_float64 jit_float64_mul 246 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 247 jit_float64 jit_float64_div 248 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 249 jit_float64 jit_float64_rem 250 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 251 jit_float64 jit_float64_ieee_rem 252 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 253 jit_float64 jit_float64_neg(jit_float64 value1) JIT_NOTHROW; 254 jit_int jit_float64_eq(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 255 jit_int jit_float64_ne(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 256 jit_int jit_float64_lt(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 257 jit_int jit_float64_le(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 258 jit_int jit_float64_gt(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 259 jit_int jit_float64_ge(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 260 jit_int jit_float64_cmpl(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 261 jit_int jit_float64_cmpg(jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 262 jit_float64 jit_float64_acos(jit_float64 value1) JIT_NOTHROW; 263 jit_float64 jit_float64_asin(jit_float64 value1) JIT_NOTHROW; 264 jit_float64 jit_float64_atan(jit_float64 value1) JIT_NOTHROW; 265 jit_float64 jit_float64_atan2 266 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 267 jit_float64 jit_float64_ceil(jit_float64 value1) JIT_NOTHROW; 268 jit_float64 jit_float64_cos(jit_float64 value1) JIT_NOTHROW; 269 jit_float64 jit_float64_cosh(jit_float64 value1) JIT_NOTHROW; 270 jit_float64 jit_float64_exp(jit_float64 value1) JIT_NOTHROW; 271 jit_float64 jit_float64_floor(jit_float64 value1) JIT_NOTHROW; 272 jit_float64 jit_float64_log(jit_float64 value1) JIT_NOTHROW; 273 jit_float64 jit_float64_log10(jit_float64 value1) JIT_NOTHROW; 274 jit_float64 jit_float64_pow 275 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 276 jit_float64 jit_float64_rint(jit_float64 value1) JIT_NOTHROW; 277 jit_float64 jit_float64_round(jit_float64 value1) JIT_NOTHROW; 278 jit_float64 jit_float64_sin(jit_float64 value1) JIT_NOTHROW; 279 jit_float64 jit_float64_sinh(jit_float64 value1) JIT_NOTHROW; 280 jit_float64 jit_float64_sqrt(jit_float64 value1) JIT_NOTHROW; 281 jit_float64 jit_float64_tan(jit_float64 value1) JIT_NOTHROW; 282 jit_float64 jit_float64_tanh(jit_float64 value1) JIT_NOTHROW; 283 jit_float64 jit_float64_trunc(jit_float64 value1) JIT_NOTHROW; 284 jit_int jit_float64_is_finite(jit_float64 value) JIT_NOTHROW; 285 jit_int jit_float64_is_nan(jit_float64 value) JIT_NOTHROW; 286 jit_int jit_float64_is_inf(jit_float64 value) JIT_NOTHROW; 287 jit_float64 jit_float64_abs(jit_float64 value1) JIT_NOTHROW; 288 jit_float64 jit_float64_min 289 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 290 jit_float64 jit_float64_max 291 (jit_float64 value1, jit_float64 value2) JIT_NOTHROW; 292 jit_int jit_float64_sign(jit_float64 value1) JIT_NOTHROW; 293 294 /* 295 * Perform operations on native floating-point values. 296 */ 297 jit_nfloat jit_nfloat_add(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 298 jit_nfloat jit_nfloat_sub(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 299 jit_nfloat jit_nfloat_mul(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 300 jit_nfloat jit_nfloat_div(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 301 jit_nfloat jit_nfloat_rem(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 302 jit_nfloat jit_nfloat_ieee_rem 303 (jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 304 jit_nfloat jit_nfloat_neg(jit_nfloat value1) JIT_NOTHROW; 305 jit_int jit_nfloat_eq(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 306 jit_int jit_nfloat_ne(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 307 jit_int jit_nfloat_lt(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 308 jit_int jit_nfloat_le(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 309 jit_int jit_nfloat_gt(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 310 jit_int jit_nfloat_ge(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 311 jit_int jit_nfloat_cmpl(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 312 jit_int jit_nfloat_cmpg(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 313 jit_nfloat jit_nfloat_acos(jit_nfloat value1) JIT_NOTHROW; 314 jit_nfloat jit_nfloat_asin(jit_nfloat value1) JIT_NOTHROW; 315 jit_nfloat jit_nfloat_atan(jit_nfloat value1) JIT_NOTHROW; 316 jit_nfloat jit_nfloat_atan2(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 317 jit_nfloat jit_nfloat_ceil(jit_nfloat value1) JIT_NOTHROW; 318 jit_nfloat jit_nfloat_cos(jit_nfloat value1) JIT_NOTHROW; 319 jit_nfloat jit_nfloat_cosh(jit_nfloat value1) JIT_NOTHROW; 320 jit_nfloat jit_nfloat_exp(jit_nfloat value1) JIT_NOTHROW; 321 jit_nfloat jit_nfloat_floor(jit_nfloat value1) JIT_NOTHROW; 322 jit_nfloat jit_nfloat_log(jit_nfloat value1) JIT_NOTHROW; 323 jit_nfloat jit_nfloat_log10(jit_nfloat value1) JIT_NOTHROW; 324 jit_nfloat jit_nfloat_pow(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 325 jit_nfloat jit_nfloat_rint(jit_nfloat value1) JIT_NOTHROW; 326 jit_nfloat jit_nfloat_round(jit_nfloat value1) JIT_NOTHROW; 327 jit_nfloat jit_nfloat_sin(jit_nfloat value1) JIT_NOTHROW; 328 jit_nfloat jit_nfloat_sinh(jit_nfloat value1) JIT_NOTHROW; 329 jit_nfloat jit_nfloat_sqrt(jit_nfloat value1) JIT_NOTHROW; 330 jit_nfloat jit_nfloat_tan(jit_nfloat value1) JIT_NOTHROW; 331 jit_nfloat jit_nfloat_tanh(jit_nfloat value1) JIT_NOTHROW; 332 jit_nfloat jit_nfloat_trunc(jit_nfloat value1) JIT_NOTHROW; 333 jit_int jit_nfloat_is_finite(jit_nfloat value) JIT_NOTHROW; 334 jit_int jit_nfloat_is_nan(jit_nfloat value) JIT_NOTHROW; 335 jit_int jit_nfloat_is_inf(jit_nfloat value) JIT_NOTHROW; 336 jit_nfloat jit_nfloat_abs(jit_nfloat value1) JIT_NOTHROW; 337 jit_nfloat jit_nfloat_min(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 338 jit_nfloat jit_nfloat_max(jit_nfloat value1, jit_nfloat value2) JIT_NOTHROW; 339 jit_int jit_nfloat_sign(jit_nfloat value1) JIT_NOTHROW; 340 341 /* 342 * Convert between integer types. 343 */ 344 jit_int jit_int_to_sbyte(jit_int value) JIT_NOTHROW; 345 jit_int jit_int_to_ubyte(jit_int value) JIT_NOTHROW; 346 jit_int jit_int_to_short(jit_int value) JIT_NOTHROW; 347 jit_int jit_int_to_ushort(jit_int value) JIT_NOTHROW; 348 jit_int jit_int_to_int(jit_int value) JIT_NOTHROW; 349 jit_uint jit_int_to_uint(jit_int value) JIT_NOTHROW; 350 jit_long jit_int_to_long(jit_int value) JIT_NOTHROW; 351 jit_ulong jit_int_to_ulong(jit_int value) JIT_NOTHROW; 352 jit_int jit_uint_to_int(jit_uint value) JIT_NOTHROW; 353 jit_uint jit_uint_to_uint(jit_uint value) JIT_NOTHROW; 354 jit_long jit_uint_to_long(jit_uint value) JIT_NOTHROW; 355 jit_ulong jit_uint_to_ulong(jit_uint value) JIT_NOTHROW; 356 jit_int jit_long_to_int(jit_long value) JIT_NOTHROW; 357 jit_uint jit_long_to_uint(jit_long value) JIT_NOTHROW; 358 jit_long jit_long_to_long(jit_long value) JIT_NOTHROW; 359 jit_ulong jit_long_to_ulong(jit_long value) JIT_NOTHROW; 360 jit_int jit_ulong_to_int(jit_ulong value) JIT_NOTHROW; 361 jit_uint jit_ulong_to_uint(jit_ulong value) JIT_NOTHROW; 362 jit_long jit_ulong_to_long(jit_ulong value) JIT_NOTHROW; 363 jit_ulong jit_ulong_to_ulong(jit_ulong value) JIT_NOTHROW; 364 365 /* 366 * Convert between integer types with overflow detection. 367 */ 368 jit_int jit_int_to_sbyte_ovf(jit_int *result, jit_int value) JIT_NOTHROW; 369 jit_int jit_int_to_ubyte_ovf(jit_int *result, jit_int value) JIT_NOTHROW; 370 jit_int jit_int_to_short_ovf(jit_int *result, jit_int value) JIT_NOTHROW; 371 jit_int jit_int_to_ushort_ovf(jit_int *result, jit_int value) JIT_NOTHROW; 372 jit_int jit_int_to_int_ovf(jit_int *result, jit_int value) JIT_NOTHROW; 373 jit_int jit_int_to_uint_ovf(jit_uint *result, jit_int value) JIT_NOTHROW; 374 jit_int jit_int_to_long_ovf(jit_long *result, jit_int value) JIT_NOTHROW; 375 jit_int jit_int_to_ulong_ovf(jit_ulong *result, jit_int value) JIT_NOTHROW; 376 jit_int jit_uint_to_int_ovf(jit_int *result, jit_uint value) JIT_NOTHROW; 377 jit_int jit_uint_to_uint_ovf(jit_uint *result, jit_uint value) JIT_NOTHROW; 378 jit_int jit_uint_to_long_ovf(jit_long *result, jit_uint value) JIT_NOTHROW; 379 jit_int jit_uint_to_ulong_ovf(jit_ulong *result, jit_uint value) JIT_NOTHROW; 380 jit_int jit_long_to_int_ovf(jit_int *result, jit_long value) JIT_NOTHROW; 381 jit_int jit_long_to_uint_ovf(jit_uint *result, jit_long value) JIT_NOTHROW; 382 jit_int jit_long_to_long_ovf(jit_long *result, jit_long value) JIT_NOTHROW; 383 jit_int jit_long_to_ulong_ovf(jit_ulong *result, jit_long value) JIT_NOTHROW; 384 jit_int jit_ulong_to_int_ovf(jit_int *result, jit_ulong value) JIT_NOTHROW; 385 jit_int jit_ulong_to_uint_ovf(jit_uint *result, jit_ulong value) JIT_NOTHROW; 386 jit_int jit_ulong_to_long_ovf(jit_long *result, jit_ulong value) JIT_NOTHROW; 387 jit_int jit_ulong_to_ulong_ovf(jit_ulong *result, jit_ulong value) JIT_NOTHROW; 388 389 /* 390 * Convert a 32-bit floating-point value into various integer types. 391 */ 392 jit_int jit_float32_to_int(jit_float32 value) JIT_NOTHROW; 393 jit_uint jit_float32_to_uint(jit_float32 value) JIT_NOTHROW; 394 jit_long jit_float32_to_long(jit_float32 value) JIT_NOTHROW; 395 jit_ulong jit_float32_to_ulong(jit_float32 value) JIT_NOTHROW; 396 397 /* 398 * Convert a 32-bit floating-point value into various integer types, 399 * with overflow detection. 400 */ 401 jit_int jit_float32_to_int_ovf(jit_int *result, jit_float32 value) JIT_NOTHROW; 402 jit_int jit_float32_to_uint_ovf(jit_uint *result, jit_float32 value) JIT_NOTHROW; 403 jit_int jit_float32_to_long_ovf(jit_long *result, jit_float32 value) JIT_NOTHROW; 404 jit_int jit_float32_to_ulong_ovf 405 (jit_ulong *result, jit_float32 value) JIT_NOTHROW; 406 407 /* 408 * Convert a 64-bit floating-point value into various integer types. 409 */ 410 jit_int jit_float64_to_int(jit_float64 value) JIT_NOTHROW; 411 jit_uint jit_float64_to_uint(jit_float64 value) JIT_NOTHROW; 412 jit_long jit_float64_to_long(jit_float64 value) JIT_NOTHROW; 413 jit_ulong jit_float64_to_ulong(jit_float64 value) JIT_NOTHROW; 414 415 /* 416 * Convert a 64-bit floating-point value into various integer types, 417 * with overflow detection. 418 */ 419 jit_int jit_float64_to_int_ovf(jit_int *result, jit_float64 value) JIT_NOTHROW; 420 jit_int jit_float64_to_uint_ovf(jit_uint *result, jit_float64 value) JIT_NOTHROW; 421 jit_int jit_float64_to_long_ovf(jit_long *result, jit_float64 value) JIT_NOTHROW; 422 jit_int jit_float64_to_ulong_ovf 423 (jit_ulong *result, jit_float64 value) JIT_NOTHROW; 424 425 /* 426 * Convert a native floating-point value into various integer types. 427 */ 428 jit_int jit_nfloat_to_int(jit_nfloat value) JIT_NOTHROW; 429 jit_uint jit_nfloat_to_uint(jit_nfloat value) JIT_NOTHROW; 430 jit_long jit_nfloat_to_long(jit_nfloat value) JIT_NOTHROW; 431 jit_ulong jit_nfloat_to_ulong(jit_nfloat value) JIT_NOTHROW; 432 433 /* 434 * Convert a native floating-point value into various integer types, 435 * with overflow detection. 436 */ 437 jit_int jit_nfloat_to_int_ovf(jit_int *result, jit_nfloat value) JIT_NOTHROW; 438 jit_int jit_nfloat_to_uint_ovf(jit_uint *result, jit_nfloat value) JIT_NOTHROW; 439 jit_int jit_nfloat_to_long_ovf(jit_long *result, jit_nfloat value) JIT_NOTHROW; 440 jit_int jit_nfloat_to_ulong_ovf 441 (jit_ulong *result, jit_nfloat value) JIT_NOTHROW; 442 443 /* 444 * Convert integer types into floating-point values. 445 */ 446 jit_float32 jit_int_to_float32(jit_int value) JIT_NOTHROW; 447 jit_float64 jit_int_to_float64(jit_int value) JIT_NOTHROW; 448 jit_nfloat jit_int_to_nfloat(jit_int value) JIT_NOTHROW; 449 jit_float32 jit_uint_to_float32(jit_uint value) JIT_NOTHROW; 450 jit_float64 jit_uint_to_float64(jit_uint value) JIT_NOTHROW; 451 jit_nfloat jit_uint_to_nfloat(jit_uint value) JIT_NOTHROW; 452 jit_float32 jit_long_to_float32(jit_long value) JIT_NOTHROW; 453 jit_float64 jit_long_to_float64(jit_long value) JIT_NOTHROW; 454 jit_nfloat jit_long_to_nfloat(jit_long value) JIT_NOTHROW; 455 jit_float32 jit_ulong_to_float32(jit_ulong value) JIT_NOTHROW; 456 jit_float64 jit_ulong_to_float64(jit_ulong value) JIT_NOTHROW; 457 jit_nfloat jit_ulong_to_nfloat(jit_ulong value) JIT_NOTHROW; 458 459 /* 460 * Convert between floating-point types. 461 */ 462 jit_float64 jit_float32_to_float64(jit_float32 value) JIT_NOTHROW; 463 jit_nfloat jit_float32_to_nfloat(jit_float32 value) JIT_NOTHROW; 464 jit_float32 jit_float64_to_float32(jit_float64 value) JIT_NOTHROW; 465 jit_nfloat jit_float64_to_nfloat(jit_float64 value) JIT_NOTHROW; 466 jit_float32 jit_nfloat_to_float32(jit_nfloat value) JIT_NOTHROW; 467 jit_float64 jit_nfloat_to_float64(jit_nfloat value) JIT_NOTHROW; 468 469 #ifdef __cplusplus 470 }; 471 #endif 472 473 #endif /* _JIT_INTRINSIC_H */