rune - Features and work
[rune.git] / librune / insn.h
1 /*
2  * INSN.H
3  *
4  * (c)Copyright 2015, Matthew Dillon, All Rights Reserved.  See the  
5  *    COPYRIGHT file at the base of the distribution.
6  */
7
8 #define INSN_MOVE       0x0001
9 #define INSN_ADD        0x0002
10 #define INSN_SUB        0x0003
11 #define INSN_AND        0x0004
12 #define INSN_OR         0x0005
13 #define INSN_XOR        0x0006
14 #define INSN_NOT        0x0007
15 #define INSN_COM        0x0008
16 #define INSN_NEG        0x0009
17 #define INSN_POS        0x000A
18 #define INSN_ASL        0x000B
19 #define INSN_ASR        0x000C
20 #define INSN_LSR        0x000D
21 #define INSN_ADDC       0x000E
22 #define INSN_SUBC       0x000F
23
24 #define INSN_MULU       0x0010
25 #define INSN_MULS       0x0011
26 #define INSN_DIVU       0x0012
27 #define INSN_DIVS       0x0013
28 #define INSN_MODU       0x0014
29 #define INSN_MODS       0x0015
30
31 #define INSN_CMP_EQ     0x001F
32 #define INSN_CMP_NE     0x011F
33 #define INSN_CMP_UGT    0x021F
34 #define INSN_CMP_UGE    0x031F
35 #define INSN_CMP_ULT    0x041F
36 #define INSN_CMP_ULE    0x051F
37 #define INSN_CMP_SGT    0x061F
38 #define INSN_CMP_SGE    0x071F
39 #define INSN_CMP_SLT    0x081F
40 #define INSN_CMP_SLE    0x091F
41
42 #define INSN_MOVEA      0x0020
43 #define INSN_ADDA       0x0021
44 #define INSN_SUBA       0x0022
45 #define INSN_ADDAU      0x0023
46 #define INSN_SUBAU      0x0024
47 #define INSN_SUBAI      0x0025
48 #define INSN_LEA        0x0026
49
50 #define INSN_CASTU      0x0030  /* Cast from unsigned integer -> integral */
51 #define INSN_CASTS      0x0031  /* Cast from signed integer   -> integral */
52 #define INSN_CASTP      0x0032  /* Cast from pointer -> integral */
53 #define INSN_PCOPY      0x0033  /* Copy pointer object & ref */
54 #define INSN_PDROP      0x0034  /* Drop pointer object & rel (NULL fields) */
55 #define INSN_PREF       0x0035  /* Reference pointer object target storage */
56 #define INSN_PREL       0x0036  /* Release pointer object target storage */
57 #define INSN_BCOPY      0x0037  /* Generic block copy */
58 #define INSN_BZERO      0x0038  /* Generic block zero */
59
60 #define INSN_INC        0x003C  /* Increment integral value by one */
61 #define INSN_DEC        0x003D  /* Decrement integral value by one */
62
63 #define INSN_CMPA_EQ    0x003F
64 #define INSN_CMPA_NE    0x013F
65 #define INSN_CMPA_UGT   0x023F
66 #define INSN_CMPA_UGE   0x033F
67 #define INSN_CMPA_ULT   0x043F
68 #define INSN_CMPA_ULE   0x053F
69 #define INSN_CMPA_SGT   0x063F
70 #define INSN_CMPA_SGE   0x073F
71 #define INSN_CMPA_SLT   0x083F
72 #define INSN_CMPA_SLE   0x093F
73
74 #define INSN_BOUNDS_TRAP 0x0040
75
76 #define INSN_FMOVE      0x0080
77 #define INSN_FADD       0x0081
78 #define INSN_FSUB       0x0082
79 #define INSN_FMUL       0x0083
80 #define INSN_FDIV       0x0084
81
82 #define INSN_FINC       0x0090
83 #define INSN_FDEC       0x0091
84 #define INSN_FNEG       0x0092
85 #define INSN_FPOS       0x0093
86 #define INSN_FNOT       0x0094
87 #define INSN_FCAST      0x0095
88
89 #define INSN_UITOF      0x0096  /* unsigned integer to floating */
90 #define INSN_SITOF      0x0097  /* signed integer to floating */
91 #define INSN_FTOUI      0x0098  /* floating to unsigned integer */
92 #define INSN_FTOSI      0x0099  /* floating to signed integer */
93
94 #define INSN_FCMP_UEQ   0x009F
95 #define INSN_FCMP_UGT   0x029F
96 #define INSN_FCMP_UGE   0x039F
97 #define INSN_FCMP_ULT   0x049F
98 #define INSN_FCMP_ULE   0x059F
99 #define INSN_FCMP_UNE   0x019F
100
101
102