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 */