1use super::types::WasmValueType;
2
3#[derive(Copy, Debug, Clone)]
5pub enum WasiInstruction {
6 Nop,
8 Unreachable,
10 Block {
12 block_type: Option<WasmValueType>,
13 },
14 Loop {
16 block_type: Option<WasmValueType>,
17 },
18 If {
20 block_type: Option<WasmValueType>,
21 },
22 Else,
24 End,
26 Br {
28 label_index: u32,
29 },
30 BrIf {
32 label_index: u32,
33 },
34 Return,
36 Call {
38 function_index: u32,
39 },
40 Drop,
42 Select,
44 LocalGet {
46 local_index: u32,
47 },
48 LocalSet {
50 local_index: u32,
51 },
52 I32Load {
54 offset: u32,
55 align: u32,
56 },
57 I64Load {
58 offset: u32,
59 align: u32,
60 },
61 F32Load {
62 offset: u32,
63 align: u32,
64 },
65 F64Load {
66 offset: u32,
67 align: u32,
68 },
69 I32Store {
71 offset: u32,
72 align: u32,
73 },
74 I64Store {
75 offset: u32,
76 align: u32,
77 },
78 F32Store {
79 offset: u32,
80 align: u32,
81 },
82 F64Store {
83 offset: u32,
84 align: u32,
85 },
86 StructNew {
88 type_index: u32,
89 },
90 StructGet {
91 type_index: u32,
92 field_index: u32,
93 },
94 StructSet {
95 type_index: u32,
96 field_index: u32,
97 },
98 I32Const {
100 value: i32,
101 },
102 I64Const {
103 value: i64,
104 },
105 F32Const {
106 value: f32,
107 },
108 F64Const {
109 value: f64,
110 },
111 I32Add,
113 I32Sub,
114 I32Mul,
115 I32DivS,
116 I32DivU,
117 I32RemS,
118 I32RemU,
119 I32And,
120 I32Or,
121 I32Xor,
122 I32Shl,
123 I32ShrS,
124 I32ShrU,
125 I32Rotl,
126 I32Rotr,
127 I32Eqz,
129 I32Eq,
130 I32Ne,
131 I32LtS,
132 I32LtU,
133 I32GtS,
134 I32GtU,
135 I32LeS,
136 I32LeU,
137 I32GeS,
138 I32GeU,
139 TaskBackpressure,
141 TaskReturn,
142 TaskWait,
143 TaskPoll,
144 TaskYield,
145 ErrorContextNew,
147 ErrorContextDebugMessage,
148}