github.com/goccy/go-jit@v0.0.0-20200514131505-ff78d45cf6af/internal/ccall/include/jit/jit-opcode.h (about) 1 /* Automatically generated from ../../jit/jit-opcodes.ops - DO NOT EDIT */ 2 3 /* 4 * jit-opcode.h - List of primitive opcodes for JIT instructions. 5 * 6 * Copyright (C) 2004 Southern Storm Software, Pty Ltd. 7 * 8 * The libjit library is free software: you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public License 10 * as published by the Free Software Foundation, either version 2.1 of 11 * the License, or (at your option) any later version. 12 * 13 * The libjit library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with the libjit library. If not, see 20 * <http://www.gnu.org/licenses/>. 21 */ 22 23 #ifndef _JIT_OPCODE_H 24 #define _JIT_OPCODE_H 25 26 #include <jit/jit-defs.h> 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 #define JIT_OP_NOP 0x0000 33 #define JIT_OP_TRUNC_SBYTE 0x0001 34 #define JIT_OP_TRUNC_UBYTE 0x0002 35 #define JIT_OP_TRUNC_SHORT 0x0003 36 #define JIT_OP_TRUNC_USHORT 0x0004 37 #define JIT_OP_TRUNC_INT 0x0005 38 #define JIT_OP_TRUNC_UINT 0x0006 39 #define JIT_OP_CHECK_SBYTE 0x0007 40 #define JIT_OP_CHECK_UBYTE 0x0008 41 #define JIT_OP_CHECK_SHORT 0x0009 42 #define JIT_OP_CHECK_USHORT 0x000A 43 #define JIT_OP_CHECK_INT 0x000B 44 #define JIT_OP_CHECK_UINT 0x000C 45 #define JIT_OP_LOW_WORD 0x000D 46 #define JIT_OP_EXPAND_INT 0x000E 47 #define JIT_OP_EXPAND_UINT 0x000F 48 #define JIT_OP_CHECK_LOW_WORD 0x0010 49 #define JIT_OP_CHECK_SIGNED_LOW_WORD 0x0011 50 #define JIT_OP_CHECK_LONG 0x0012 51 #define JIT_OP_CHECK_ULONG 0x0013 52 #define JIT_OP_FLOAT32_TO_INT 0x0014 53 #define JIT_OP_FLOAT32_TO_UINT 0x0015 54 #define JIT_OP_FLOAT32_TO_LONG 0x0016 55 #define JIT_OP_FLOAT32_TO_ULONG 0x0017 56 #define JIT_OP_CHECK_FLOAT32_TO_INT 0x0018 57 #define JIT_OP_CHECK_FLOAT32_TO_UINT 0x0019 58 #define JIT_OP_CHECK_FLOAT32_TO_LONG 0x001A 59 #define JIT_OP_CHECK_FLOAT32_TO_ULONG 0x001B 60 #define JIT_OP_INT_TO_FLOAT32 0x001C 61 #define JIT_OP_UINT_TO_FLOAT32 0x001D 62 #define JIT_OP_LONG_TO_FLOAT32 0x001E 63 #define JIT_OP_ULONG_TO_FLOAT32 0x001F 64 #define JIT_OP_FLOAT32_TO_FLOAT64 0x0020 65 #define JIT_OP_FLOAT64_TO_INT 0x0021 66 #define JIT_OP_FLOAT64_TO_UINT 0x0022 67 #define JIT_OP_FLOAT64_TO_LONG 0x0023 68 #define JIT_OP_FLOAT64_TO_ULONG 0x0024 69 #define JIT_OP_CHECK_FLOAT64_TO_INT 0x0025 70 #define JIT_OP_CHECK_FLOAT64_TO_UINT 0x0026 71 #define JIT_OP_CHECK_FLOAT64_TO_LONG 0x0027 72 #define JIT_OP_CHECK_FLOAT64_TO_ULONG 0x0028 73 #define JIT_OP_INT_TO_FLOAT64 0x0029 74 #define JIT_OP_UINT_TO_FLOAT64 0x002A 75 #define JIT_OP_LONG_TO_FLOAT64 0x002B 76 #define JIT_OP_ULONG_TO_FLOAT64 0x002C 77 #define JIT_OP_FLOAT64_TO_FLOAT32 0x002D 78 #define JIT_OP_NFLOAT_TO_INT 0x002E 79 #define JIT_OP_NFLOAT_TO_UINT 0x002F 80 #define JIT_OP_NFLOAT_TO_LONG 0x0030 81 #define JIT_OP_NFLOAT_TO_ULONG 0x0031 82 #define JIT_OP_CHECK_NFLOAT_TO_INT 0x0032 83 #define JIT_OP_CHECK_NFLOAT_TO_UINT 0x0033 84 #define JIT_OP_CHECK_NFLOAT_TO_LONG 0x0034 85 #define JIT_OP_CHECK_NFLOAT_TO_ULONG 0x0035 86 #define JIT_OP_INT_TO_NFLOAT 0x0036 87 #define JIT_OP_UINT_TO_NFLOAT 0x0037 88 #define JIT_OP_LONG_TO_NFLOAT 0x0038 89 #define JIT_OP_ULONG_TO_NFLOAT 0x0039 90 #define JIT_OP_NFLOAT_TO_FLOAT32 0x003A 91 #define JIT_OP_NFLOAT_TO_FLOAT64 0x003B 92 #define JIT_OP_FLOAT32_TO_NFLOAT 0x003C 93 #define JIT_OP_FLOAT64_TO_NFLOAT 0x003D 94 #define JIT_OP_IADD 0x003E 95 #define JIT_OP_IADD_OVF 0x003F 96 #define JIT_OP_IADD_OVF_UN 0x0040 97 #define JIT_OP_ISUB 0x0041 98 #define JIT_OP_ISUB_OVF 0x0042 99 #define JIT_OP_ISUB_OVF_UN 0x0043 100 #define JIT_OP_IMUL 0x0044 101 #define JIT_OP_IMUL_OVF 0x0045 102 #define JIT_OP_IMUL_OVF_UN 0x0046 103 #define JIT_OP_IDIV 0x0047 104 #define JIT_OP_IDIV_UN 0x0048 105 #define JIT_OP_IREM 0x0049 106 #define JIT_OP_IREM_UN 0x004A 107 #define JIT_OP_INEG 0x004B 108 #define JIT_OP_LADD 0x004C 109 #define JIT_OP_LADD_OVF 0x004D 110 #define JIT_OP_LADD_OVF_UN 0x004E 111 #define JIT_OP_LSUB 0x004F 112 #define JIT_OP_LSUB_OVF 0x0050 113 #define JIT_OP_LSUB_OVF_UN 0x0051 114 #define JIT_OP_LMUL 0x0052 115 #define JIT_OP_LMUL_OVF 0x0053 116 #define JIT_OP_LMUL_OVF_UN 0x0054 117 #define JIT_OP_LDIV 0x0055 118 #define JIT_OP_LDIV_UN 0x0056 119 #define JIT_OP_LREM 0x0057 120 #define JIT_OP_LREM_UN 0x0058 121 #define JIT_OP_LNEG 0x0059 122 #define JIT_OP_FADD 0x005A 123 #define JIT_OP_FSUB 0x005B 124 #define JIT_OP_FMUL 0x005C 125 #define JIT_OP_FDIV 0x005D 126 #define JIT_OP_FREM 0x005E 127 #define JIT_OP_FREM_IEEE 0x005F 128 #define JIT_OP_FNEG 0x0060 129 #define JIT_OP_DADD 0x0061 130 #define JIT_OP_DSUB 0x0062 131 #define JIT_OP_DMUL 0x0063 132 #define JIT_OP_DDIV 0x0064 133 #define JIT_OP_DREM 0x0065 134 #define JIT_OP_DREM_IEEE 0x0066 135 #define JIT_OP_DNEG 0x0067 136 #define JIT_OP_NFADD 0x0068 137 #define JIT_OP_NFSUB 0x0069 138 #define JIT_OP_NFMUL 0x006A 139 #define JIT_OP_NFDIV 0x006B 140 #define JIT_OP_NFREM 0x006C 141 #define JIT_OP_NFREM_IEEE 0x006D 142 #define JIT_OP_NFNEG 0x006E 143 #define JIT_OP_IAND 0x006F 144 #define JIT_OP_IOR 0x0070 145 #define JIT_OP_IXOR 0x0071 146 #define JIT_OP_INOT 0x0072 147 #define JIT_OP_ISHL 0x0073 148 #define JIT_OP_ISHR 0x0074 149 #define JIT_OP_ISHR_UN 0x0075 150 #define JIT_OP_LAND 0x0076 151 #define JIT_OP_LOR 0x0077 152 #define JIT_OP_LXOR 0x0078 153 #define JIT_OP_LNOT 0x0079 154 #define JIT_OP_LSHL 0x007A 155 #define JIT_OP_LSHR 0x007B 156 #define JIT_OP_LSHR_UN 0x007C 157 #define JIT_OP_BR 0x007D 158 #define JIT_OP_BR_IFALSE 0x007E 159 #define JIT_OP_BR_ITRUE 0x007F 160 #define JIT_OP_BR_IEQ 0x0080 161 #define JIT_OP_BR_INE 0x0081 162 #define JIT_OP_BR_ILT 0x0082 163 #define JIT_OP_BR_ILT_UN 0x0083 164 #define JIT_OP_BR_ILE 0x0084 165 #define JIT_OP_BR_ILE_UN 0x0085 166 #define JIT_OP_BR_IGT 0x0086 167 #define JIT_OP_BR_IGT_UN 0x0087 168 #define JIT_OP_BR_IGE 0x0088 169 #define JIT_OP_BR_IGE_UN 0x0089 170 #define JIT_OP_BR_LFALSE 0x008A 171 #define JIT_OP_BR_LTRUE 0x008B 172 #define JIT_OP_BR_LEQ 0x008C 173 #define JIT_OP_BR_LNE 0x008D 174 #define JIT_OP_BR_LLT 0x008E 175 #define JIT_OP_BR_LLT_UN 0x008F 176 #define JIT_OP_BR_LLE 0x0090 177 #define JIT_OP_BR_LLE_UN 0x0091 178 #define JIT_OP_BR_LGT 0x0092 179 #define JIT_OP_BR_LGT_UN 0x0093 180 #define JIT_OP_BR_LGE 0x0094 181 #define JIT_OP_BR_LGE_UN 0x0095 182 #define JIT_OP_BR_FEQ 0x0096 183 #define JIT_OP_BR_FNE 0x0097 184 #define JIT_OP_BR_FLT 0x0098 185 #define JIT_OP_BR_FLE 0x0099 186 #define JIT_OP_BR_FGT 0x009A 187 #define JIT_OP_BR_FGE 0x009B 188 #define JIT_OP_BR_FLT_INV 0x009C 189 #define JIT_OP_BR_FLE_INV 0x009D 190 #define JIT_OP_BR_FGT_INV 0x009E 191 #define JIT_OP_BR_FGE_INV 0x009F 192 #define JIT_OP_BR_DEQ 0x00A0 193 #define JIT_OP_BR_DNE 0x00A1 194 #define JIT_OP_BR_DLT 0x00A2 195 #define JIT_OP_BR_DLE 0x00A3 196 #define JIT_OP_BR_DGT 0x00A4 197 #define JIT_OP_BR_DGE 0x00A5 198 #define JIT_OP_BR_DLT_INV 0x00A6 199 #define JIT_OP_BR_DLE_INV 0x00A7 200 #define JIT_OP_BR_DGT_INV 0x00A8 201 #define JIT_OP_BR_DGE_INV 0x00A9 202 #define JIT_OP_BR_NFEQ 0x00AA 203 #define JIT_OP_BR_NFNE 0x00AB 204 #define JIT_OP_BR_NFLT 0x00AC 205 #define JIT_OP_BR_NFLE 0x00AD 206 #define JIT_OP_BR_NFGT 0x00AE 207 #define JIT_OP_BR_NFGE 0x00AF 208 #define JIT_OP_BR_NFLT_INV 0x00B0 209 #define JIT_OP_BR_NFLE_INV 0x00B1 210 #define JIT_OP_BR_NFGT_INV 0x00B2 211 #define JIT_OP_BR_NFGE_INV 0x00B3 212 #define JIT_OP_ICMP 0x00B4 213 #define JIT_OP_ICMP_UN 0x00B5 214 #define JIT_OP_LCMP 0x00B6 215 #define JIT_OP_LCMP_UN 0x00B7 216 #define JIT_OP_FCMPL 0x00B8 217 #define JIT_OP_FCMPG 0x00B9 218 #define JIT_OP_DCMPL 0x00BA 219 #define JIT_OP_DCMPG 0x00BB 220 #define JIT_OP_NFCMPL 0x00BC 221 #define JIT_OP_NFCMPG 0x00BD 222 #define JIT_OP_IEQ 0x00BE 223 #define JIT_OP_INE 0x00BF 224 #define JIT_OP_ILT 0x00C0 225 #define JIT_OP_ILT_UN 0x00C1 226 #define JIT_OP_ILE 0x00C2 227 #define JIT_OP_ILE_UN 0x00C3 228 #define JIT_OP_IGT 0x00C4 229 #define JIT_OP_IGT_UN 0x00C5 230 #define JIT_OP_IGE 0x00C6 231 #define JIT_OP_IGE_UN 0x00C7 232 #define JIT_OP_LEQ 0x00C8 233 #define JIT_OP_LNE 0x00C9 234 #define JIT_OP_LLT 0x00CA 235 #define JIT_OP_LLT_UN 0x00CB 236 #define JIT_OP_LLE 0x00CC 237 #define JIT_OP_LLE_UN 0x00CD 238 #define JIT_OP_LGT 0x00CE 239 #define JIT_OP_LGT_UN 0x00CF 240 #define JIT_OP_LGE 0x00D0 241 #define JIT_OP_LGE_UN 0x00D1 242 #define JIT_OP_FEQ 0x00D2 243 #define JIT_OP_FNE 0x00D3 244 #define JIT_OP_FLT 0x00D4 245 #define JIT_OP_FLE 0x00D5 246 #define JIT_OP_FGT 0x00D6 247 #define JIT_OP_FGE 0x00D7 248 #define JIT_OP_FLT_INV 0x00D8 249 #define JIT_OP_FLE_INV 0x00D9 250 #define JIT_OP_FGT_INV 0x00DA 251 #define JIT_OP_FGE_INV 0x00DB 252 #define JIT_OP_DEQ 0x00DC 253 #define JIT_OP_DNE 0x00DD 254 #define JIT_OP_DLT 0x00DE 255 #define JIT_OP_DLE 0x00DF 256 #define JIT_OP_DGT 0x00E0 257 #define JIT_OP_DGE 0x00E1 258 #define JIT_OP_DLT_INV 0x00E2 259 #define JIT_OP_DLE_INV 0x00E3 260 #define JIT_OP_DGT_INV 0x00E4 261 #define JIT_OP_DGE_INV 0x00E5 262 #define JIT_OP_NFEQ 0x00E6 263 #define JIT_OP_NFNE 0x00E7 264 #define JIT_OP_NFLT 0x00E8 265 #define JIT_OP_NFLE 0x00E9 266 #define JIT_OP_NFGT 0x00EA 267 #define JIT_OP_NFGE 0x00EB 268 #define JIT_OP_NFLT_INV 0x00EC 269 #define JIT_OP_NFLE_INV 0x00ED 270 #define JIT_OP_NFGT_INV 0x00EE 271 #define JIT_OP_NFGE_INV 0x00EF 272 #define JIT_OP_IS_FNAN 0x00F0 273 #define JIT_OP_IS_FINF 0x00F1 274 #define JIT_OP_IS_FFINITE 0x00F2 275 #define JIT_OP_IS_DNAN 0x00F3 276 #define JIT_OP_IS_DINF 0x00F4 277 #define JIT_OP_IS_DFINITE 0x00F5 278 #define JIT_OP_IS_NFNAN 0x00F6 279 #define JIT_OP_IS_NFINF 0x00F7 280 #define JIT_OP_IS_NFFINITE 0x00F8 281 #define JIT_OP_FACOS 0x00F9 282 #define JIT_OP_FASIN 0x00FA 283 #define JIT_OP_FATAN 0x00FB 284 #define JIT_OP_FATAN2 0x00FC 285 #define JIT_OP_FCEIL 0x00FD 286 #define JIT_OP_FCOS 0x00FE 287 #define JIT_OP_FCOSH 0x00FF 288 #define JIT_OP_FEXP 0x0100 289 #define JIT_OP_FFLOOR 0x0101 290 #define JIT_OP_FLOG 0x0102 291 #define JIT_OP_FLOG10 0x0103 292 #define JIT_OP_FPOW 0x0104 293 #define JIT_OP_FRINT 0x0105 294 #define JIT_OP_FROUND 0x0106 295 #define JIT_OP_FSIN 0x0107 296 #define JIT_OP_FSINH 0x0108 297 #define JIT_OP_FSQRT 0x0109 298 #define JIT_OP_FTAN 0x010A 299 #define JIT_OP_FTANH 0x010B 300 #define JIT_OP_FTRUNC 0x010C 301 #define JIT_OP_DACOS 0x010D 302 #define JIT_OP_DASIN 0x010E 303 #define JIT_OP_DATAN 0x010F 304 #define JIT_OP_DATAN2 0x0110 305 #define JIT_OP_DCEIL 0x0111 306 #define JIT_OP_DCOS 0x0112 307 #define JIT_OP_DCOSH 0x0113 308 #define JIT_OP_DEXP 0x0114 309 #define JIT_OP_DFLOOR 0x0115 310 #define JIT_OP_DLOG 0x0116 311 #define JIT_OP_DLOG10 0x0117 312 #define JIT_OP_DPOW 0x0118 313 #define JIT_OP_DRINT 0x0119 314 #define JIT_OP_DROUND 0x011A 315 #define JIT_OP_DSIN 0x011B 316 #define JIT_OP_DSINH 0x011C 317 #define JIT_OP_DSQRT 0x011D 318 #define JIT_OP_DTAN 0x011E 319 #define JIT_OP_DTANH 0x011F 320 #define JIT_OP_DTRUNC 0x0120 321 #define JIT_OP_NFACOS 0x0121 322 #define JIT_OP_NFASIN 0x0122 323 #define JIT_OP_NFATAN 0x0123 324 #define JIT_OP_NFATAN2 0x0124 325 #define JIT_OP_NFCEIL 0x0125 326 #define JIT_OP_NFCOS 0x0126 327 #define JIT_OP_NFCOSH 0x0127 328 #define JIT_OP_NFEXP 0x0128 329 #define JIT_OP_NFFLOOR 0x0129 330 #define JIT_OP_NFLOG 0x012A 331 #define JIT_OP_NFLOG10 0x012B 332 #define JIT_OP_NFPOW 0x012C 333 #define JIT_OP_NFRINT 0x012D 334 #define JIT_OP_NFROUND 0x012E 335 #define JIT_OP_NFSIN 0x012F 336 #define JIT_OP_NFSINH 0x0130 337 #define JIT_OP_NFSQRT 0x0131 338 #define JIT_OP_NFTAN 0x0132 339 #define JIT_OP_NFTANH 0x0133 340 #define JIT_OP_NFTRUNC 0x0134 341 #define JIT_OP_IABS 0x0135 342 #define JIT_OP_LABS 0x0136 343 #define JIT_OP_FABS 0x0137 344 #define JIT_OP_DABS 0x0138 345 #define JIT_OP_NFABS 0x0139 346 #define JIT_OP_IMIN 0x013A 347 #define JIT_OP_IMIN_UN 0x013B 348 #define JIT_OP_LMIN 0x013C 349 #define JIT_OP_LMIN_UN 0x013D 350 #define JIT_OP_FMIN 0x013E 351 #define JIT_OP_DMIN 0x013F 352 #define JIT_OP_NFMIN 0x0140 353 #define JIT_OP_IMAX 0x0141 354 #define JIT_OP_IMAX_UN 0x0142 355 #define JIT_OP_LMAX 0x0143 356 #define JIT_OP_LMAX_UN 0x0144 357 #define JIT_OP_FMAX 0x0145 358 #define JIT_OP_DMAX 0x0146 359 #define JIT_OP_NFMAX 0x0147 360 #define JIT_OP_ISIGN 0x0148 361 #define JIT_OP_LSIGN 0x0149 362 #define JIT_OP_FSIGN 0x014A 363 #define JIT_OP_DSIGN 0x014B 364 #define JIT_OP_NFSIGN 0x014C 365 #define JIT_OP_CHECK_NULL 0x014D 366 #define JIT_OP_CALL 0x014E 367 #define JIT_OP_CALL_TAIL 0x014F 368 #define JIT_OP_CALL_INDIRECT 0x0150 369 #define JIT_OP_CALL_INDIRECT_TAIL 0x0151 370 #define JIT_OP_CALL_VTABLE_PTR 0x0152 371 #define JIT_OP_CALL_VTABLE_PTR_TAIL 0x0153 372 #define JIT_OP_CALL_EXTERNAL 0x0154 373 #define JIT_OP_CALL_EXTERNAL_TAIL 0x0155 374 #define JIT_OP_RETURN 0x0156 375 #define JIT_OP_RETURN_INT 0x0157 376 #define JIT_OP_RETURN_LONG 0x0158 377 #define JIT_OP_RETURN_FLOAT32 0x0159 378 #define JIT_OP_RETURN_FLOAT64 0x015A 379 #define JIT_OP_RETURN_NFLOAT 0x015B 380 #define JIT_OP_RETURN_SMALL_STRUCT 0x015C 381 #define JIT_OP_IMPORT 0x015D 382 #define JIT_OP_THROW 0x015E 383 #define JIT_OP_RETHROW 0x015F 384 #define JIT_OP_LOAD_PC 0x0160 385 #define JIT_OP_LOAD_EXCEPTION_PC 0x0161 386 #define JIT_OP_ENTER_FINALLY 0x0162 387 #define JIT_OP_LEAVE_FINALLY 0x0163 388 #define JIT_OP_CALL_FINALLY 0x0164 389 #define JIT_OP_ENTER_FILTER 0x0165 390 #define JIT_OP_LEAVE_FILTER 0x0166 391 #define JIT_OP_CALL_FILTER 0x0167 392 #define JIT_OP_CALL_FILTER_RETURN 0x0168 393 #define JIT_OP_ADDRESS_OF_LABEL 0x0169 394 #define JIT_OP_COPY_LOAD_SBYTE 0x016A 395 #define JIT_OP_COPY_LOAD_UBYTE 0x016B 396 #define JIT_OP_COPY_LOAD_SHORT 0x016C 397 #define JIT_OP_COPY_LOAD_USHORT 0x016D 398 #define JIT_OP_COPY_INT 0x016E 399 #define JIT_OP_COPY_LONG 0x016F 400 #define JIT_OP_COPY_FLOAT32 0x0170 401 #define JIT_OP_COPY_FLOAT64 0x0171 402 #define JIT_OP_COPY_NFLOAT 0x0172 403 #define JIT_OP_COPY_STRUCT 0x0173 404 #define JIT_OP_COPY_STORE_BYTE 0x0174 405 #define JIT_OP_COPY_STORE_SHORT 0x0175 406 #define JIT_OP_ADDRESS_OF 0x0176 407 #define JIT_OP_INCOMING_REG 0x0177 408 #define JIT_OP_INCOMING_FRAME_POSN 0x0178 409 #define JIT_OP_OUTGOING_REG 0x0179 410 #define JIT_OP_RETURN_REG 0x017A 411 #define JIT_OP_RETRIEVE_FRAME_POINTER 0x017B 412 #define JIT_OP_PUSH_INT 0x017C 413 #define JIT_OP_PUSH_LONG 0x017D 414 #define JIT_OP_PUSH_FLOAT32 0x017E 415 #define JIT_OP_PUSH_FLOAT64 0x017F 416 #define JIT_OP_PUSH_NFLOAT 0x0180 417 #define JIT_OP_PUSH_STRUCT 0x0181 418 #define JIT_OP_POP_STACK 0x0182 419 #define JIT_OP_FLUSH_SMALL_STRUCT 0x0183 420 #define JIT_OP_SET_PARAM_INT 0x0184 421 #define JIT_OP_SET_PARAM_LONG 0x0185 422 #define JIT_OP_SET_PARAM_FLOAT32 0x0186 423 #define JIT_OP_SET_PARAM_FLOAT64 0x0187 424 #define JIT_OP_SET_PARAM_NFLOAT 0x0188 425 #define JIT_OP_SET_PARAM_STRUCT 0x0189 426 #define JIT_OP_PUSH_RETURN_AREA_PTR 0x018A 427 #define JIT_OP_LOAD_RELATIVE_SBYTE 0x018B 428 #define JIT_OP_LOAD_RELATIVE_UBYTE 0x018C 429 #define JIT_OP_LOAD_RELATIVE_SHORT 0x018D 430 #define JIT_OP_LOAD_RELATIVE_USHORT 0x018E 431 #define JIT_OP_LOAD_RELATIVE_INT 0x018F 432 #define JIT_OP_LOAD_RELATIVE_LONG 0x0190 433 #define JIT_OP_LOAD_RELATIVE_FLOAT32 0x0191 434 #define JIT_OP_LOAD_RELATIVE_FLOAT64 0x0192 435 #define JIT_OP_LOAD_RELATIVE_NFLOAT 0x0193 436 #define JIT_OP_LOAD_RELATIVE_STRUCT 0x0194 437 #define JIT_OP_STORE_RELATIVE_BYTE 0x0195 438 #define JIT_OP_STORE_RELATIVE_SHORT 0x0196 439 #define JIT_OP_STORE_RELATIVE_INT 0x0197 440 #define JIT_OP_STORE_RELATIVE_LONG 0x0198 441 #define JIT_OP_STORE_RELATIVE_FLOAT32 0x0199 442 #define JIT_OP_STORE_RELATIVE_FLOAT64 0x019A 443 #define JIT_OP_STORE_RELATIVE_NFLOAT 0x019B 444 #define JIT_OP_STORE_RELATIVE_STRUCT 0x019C 445 #define JIT_OP_ADD_RELATIVE 0x019D 446 #define JIT_OP_LOAD_ELEMENT_SBYTE 0x019E 447 #define JIT_OP_LOAD_ELEMENT_UBYTE 0x019F 448 #define JIT_OP_LOAD_ELEMENT_SHORT 0x01A0 449 #define JIT_OP_LOAD_ELEMENT_USHORT 0x01A1 450 #define JIT_OP_LOAD_ELEMENT_INT 0x01A2 451 #define JIT_OP_LOAD_ELEMENT_LONG 0x01A3 452 #define JIT_OP_LOAD_ELEMENT_FLOAT32 0x01A4 453 #define JIT_OP_LOAD_ELEMENT_FLOAT64 0x01A5 454 #define JIT_OP_LOAD_ELEMENT_NFLOAT 0x01A6 455 #define JIT_OP_STORE_ELEMENT_BYTE 0x01A7 456 #define JIT_OP_STORE_ELEMENT_SHORT 0x01A8 457 #define JIT_OP_STORE_ELEMENT_INT 0x01A9 458 #define JIT_OP_STORE_ELEMENT_LONG 0x01AA 459 #define JIT_OP_STORE_ELEMENT_FLOAT32 0x01AB 460 #define JIT_OP_STORE_ELEMENT_FLOAT64 0x01AC 461 #define JIT_OP_STORE_ELEMENT_NFLOAT 0x01AD 462 #define JIT_OP_MEMCPY 0x01AE 463 #define JIT_OP_MEMMOVE 0x01AF 464 #define JIT_OP_MEMSET 0x01B0 465 #define JIT_OP_ALLOCA 0x01B1 466 #define JIT_OP_MARK_OFFSET 0x01B2 467 #define JIT_OP_MARK_BREAKPOINT 0x01B3 468 #define JIT_OP_JUMP_TABLE 0x01B4 469 #define JIT_OP_NUM_OPCODES 0x01B5 470 471 /* 472 * Opcode information. 473 */ 474 typedef struct jit_opcode_info jit_opcode_info_t; 475 struct jit_opcode_info 476 { 477 const char *name; 478 int flags; 479 }; 480 #define JIT_OPCODE_DEST_MASK 0x0000000F 481 #define JIT_OPCODE_DEST_EMPTY 0x00000000 482 #define JIT_OPCODE_DEST_INT 0x00000001 483 #define JIT_OPCODE_DEST_LONG 0x00000002 484 #define JIT_OPCODE_DEST_FLOAT32 0x00000003 485 #define JIT_OPCODE_DEST_FLOAT64 0x00000004 486 #define JIT_OPCODE_DEST_NFLOAT 0x00000005 487 #define JIT_OPCODE_DEST_ANY 0x00000006 488 #define JIT_OPCODE_SRC1_MASK 0x000000F0 489 #define JIT_OPCODE_SRC1_EMPTY 0x00000000 490 #define JIT_OPCODE_SRC1_INT 0x00000010 491 #define JIT_OPCODE_SRC1_LONG 0x00000020 492 #define JIT_OPCODE_SRC1_FLOAT32 0x00000030 493 #define JIT_OPCODE_SRC1_FLOAT64 0x00000040 494 #define JIT_OPCODE_SRC1_NFLOAT 0x00000050 495 #define JIT_OPCODE_SRC1_ANY 0x00000060 496 #define JIT_OPCODE_SRC2_MASK 0x00000F00 497 #define JIT_OPCODE_SRC2_EMPTY 0x00000000 498 #define JIT_OPCODE_SRC2_INT 0x00000100 499 #define JIT_OPCODE_SRC2_LONG 0x00000200 500 #define JIT_OPCODE_SRC2_FLOAT32 0x00000300 501 #define JIT_OPCODE_SRC2_FLOAT64 0x00000400 502 #define JIT_OPCODE_SRC2_NFLOAT 0x00000500 503 #define JIT_OPCODE_SRC2_ANY 0x00000600 504 #define JIT_OPCODE_IS_BRANCH 0x00001000 505 #define JIT_OPCODE_IS_CALL 0x00002000 506 #define JIT_OPCODE_IS_CALL_EXTERNAL 0x00004000 507 #define JIT_OPCODE_IS_REG 0x00008000 508 #define JIT_OPCODE_IS_ADDROF_LABEL 0x00010000 509 #define JIT_OPCODE_IS_JUMP_TABLE 0x00020000 510 #define JIT_OPCODE_OPER_MASK 0x01F00000 511 #define JIT_OPCODE_OPER_NONE 0x00000000 512 #define JIT_OPCODE_OPER_ADD 0x00100000 513 #define JIT_OPCODE_OPER_SUB 0x00200000 514 #define JIT_OPCODE_OPER_MUL 0x00300000 515 #define JIT_OPCODE_OPER_DIV 0x00400000 516 #define JIT_OPCODE_OPER_REM 0x00500000 517 #define JIT_OPCODE_OPER_NEG 0x00600000 518 #define JIT_OPCODE_OPER_AND 0x00700000 519 #define JIT_OPCODE_OPER_OR 0x00800000 520 #define JIT_OPCODE_OPER_XOR 0x00900000 521 #define JIT_OPCODE_OPER_NOT 0x00A00000 522 #define JIT_OPCODE_OPER_EQ 0x00B00000 523 #define JIT_OPCODE_OPER_NE 0x00C00000 524 #define JIT_OPCODE_OPER_LT 0x00D00000 525 #define JIT_OPCODE_OPER_LE 0x00E00000 526 #define JIT_OPCODE_OPER_GT 0x00F00000 527 #define JIT_OPCODE_OPER_GE 0x01000000 528 #define JIT_OPCODE_OPER_SHL 0x01100000 529 #define JIT_OPCODE_OPER_SHR 0x01200000 530 #define JIT_OPCODE_OPER_SHR_UN 0x01300000 531 #define JIT_OPCODE_OPER_COPY 0x01400000 532 #define JIT_OPCODE_OPER_ADDRESS_OF 0x01500000 533 #ifdef JIT_NATIVE_INT32 534 #define JIT_OPCODE_DEST_PTR JIT_OPCODE_DEST_INT 535 #define JIT_OPCODE_SRC1_PTR JIT_OPCODE_SRC1_INT 536 #define JIT_OPCODE_SRC2_PTR JIT_OPCODE_SRC2_INT 537 #else 538 #define JIT_OPCODE_DEST_PTR JIT_OPCODE_DEST_LONG 539 #define JIT_OPCODE_SRC1_PTR JIT_OPCODE_SRC1_LONG 540 #define JIT_OPCODE_SRC2_PTR JIT_OPCODE_SRC2_LONG 541 #endif 542 JIT_EXPORT_DATA jit_opcode_info_t const jit_opcodes[JIT_OP_NUM_OPCODES]; 543 544 #include "jit/jit-opcode-compat.h" 545 546 #ifdef __cplusplus 547 }; 548 #endif 549 550 #endif /* _JIT_OPCODE_H */