1use libc::FILE;
4use super::{MIR_op_t, MIR_insn};
5
6pub const MIR_API_VERSION: f64 = -1.0;
7pub const MIR_NO_IO: u32 = 0;
8pub const MIR_NO_SCAN: u32 = 0;
9pub const MIR_BLK_NUM: u32 = 5;
10pub const MIR_PTR32: u32 = 0;
11pub const MIR_PTR64: u32 = 1;
12pub const MIR_MAX_SCALE: u32 = 255;
13pub const MIR_MAX_REG_NUM: u32 = 4294967295;
14pub const MIR_NON_VAR: u32 = 4294967295;
15pub type htab_hash_t = ::std::os::raw::c_uint;
16pub const MIR_no_error: MIR_error_type = 0;
17pub const MIR_syntax_error: MIR_error_type = 1;
18pub const MIR_binary_io_error: MIR_error_type = 2;
19pub const MIR_alloc_error: MIR_error_type = 3;
20pub const MIR_finish_error: MIR_error_type = 4;
21pub const MIR_no_module_error: MIR_error_type = 5;
22pub const MIR_nested_module_error: MIR_error_type = 6;
23pub const MIR_no_func_error: MIR_error_type = 7;
24pub const MIR_func_error: MIR_error_type = 8;
25pub const MIR_vararg_func_error: MIR_error_type = 9;
26pub const MIR_nested_func_error: MIR_error_type = 10;
27pub const MIR_wrong_param_value_error: MIR_error_type = 11;
28pub const MIR_hard_reg_error: MIR_error_type = 12;
29pub const MIR_reserved_name_error: MIR_error_type = 13;
30pub const MIR_import_export_error: MIR_error_type = 14;
31pub const MIR_undeclared_func_reg_error: MIR_error_type = 15;
32pub const MIR_repeated_decl_error: MIR_error_type = 16;
33pub const MIR_reg_type_error: MIR_error_type = 17;
34pub const MIR_wrong_type_error: MIR_error_type = 18;
35pub const MIR_unique_reg_error: MIR_error_type = 19;
36pub const MIR_undeclared_op_ref_error: MIR_error_type = 20;
37pub const MIR_ops_num_error: MIR_error_type = 21;
38pub const MIR_call_op_error: MIR_error_type = 22;
39pub const MIR_unspec_op_error: MIR_error_type = 23;
40pub const MIR_wrong_lref_error: MIR_error_type = 24;
41pub const MIR_ret_error: MIR_error_type = 25;
42pub const MIR_op_mode_error: MIR_error_type = 26;
43pub const MIR_out_op_error: MIR_error_type = 27;
44pub const MIR_invalid_insn_error: MIR_error_type = 28;
45pub const MIR_ctx_change_error: MIR_error_type = 29;
46pub type MIR_error_type = ::std::os::raw::c_uint;
47pub use self::MIR_error_type as MIR_error_type_t;
48pub type MIR_error_func_t = ::std::option::Option<
49 unsafe extern "C-unwind" fn(
50 error_type: MIR_error_type_t,
51 format: *const ::std::os::raw::c_char,
52 ...
53 ) -> !,
54>;
55pub const MIR_MOV: MIR_insn_code_t = 0;
56pub const MIR_FMOV: MIR_insn_code_t = 1;
57pub const MIR_DMOV: MIR_insn_code_t = 2;
58pub const MIR_LDMOV: MIR_insn_code_t = 3;
59pub const MIR_EXT8: MIR_insn_code_t = 4;
60pub const MIR_EXT16: MIR_insn_code_t = 5;
61pub const MIR_EXT32: MIR_insn_code_t = 6;
62pub const MIR_UEXT8: MIR_insn_code_t = 7;
63pub const MIR_UEXT16: MIR_insn_code_t = 8;
64pub const MIR_UEXT32: MIR_insn_code_t = 9;
65pub const MIR_I2F: MIR_insn_code_t = 10;
66pub const MIR_I2D: MIR_insn_code_t = 11;
67pub const MIR_I2LD: MIR_insn_code_t = 12;
68pub const MIR_UI2F: MIR_insn_code_t = 13;
69pub const MIR_UI2D: MIR_insn_code_t = 14;
70pub const MIR_UI2LD: MIR_insn_code_t = 15;
71pub const MIR_F2I: MIR_insn_code_t = 16;
72pub const MIR_D2I: MIR_insn_code_t = 17;
73pub const MIR_LD2I: MIR_insn_code_t = 18;
74pub const MIR_F2D: MIR_insn_code_t = 19;
75pub const MIR_F2LD: MIR_insn_code_t = 20;
76pub const MIR_D2F: MIR_insn_code_t = 21;
77pub const MIR_D2LD: MIR_insn_code_t = 22;
78pub const MIR_LD2F: MIR_insn_code_t = 23;
79pub const MIR_LD2D: MIR_insn_code_t = 24;
80pub const MIR_NEG: MIR_insn_code_t = 25;
81pub const MIR_NEGS: MIR_insn_code_t = 26;
82pub const MIR_FNEG: MIR_insn_code_t = 27;
83pub const MIR_DNEG: MIR_insn_code_t = 28;
84pub const MIR_LDNEG: MIR_insn_code_t = 29;
85pub const MIR_ADDR: MIR_insn_code_t = 30;
86pub const MIR_ADDR8: MIR_insn_code_t = 31;
87pub const MIR_ADDR16: MIR_insn_code_t = 32;
88pub const MIR_ADDR32: MIR_insn_code_t = 33;
89pub const MIR_ADD: MIR_insn_code_t = 34;
90pub const MIR_ADDS: MIR_insn_code_t = 35;
91pub const MIR_FADD: MIR_insn_code_t = 36;
92pub const MIR_DADD: MIR_insn_code_t = 37;
93pub const MIR_LDADD: MIR_insn_code_t = 38;
94pub const MIR_SUB: MIR_insn_code_t = 39;
95pub const MIR_SUBS: MIR_insn_code_t = 40;
96pub const MIR_FSUB: MIR_insn_code_t = 41;
97pub const MIR_DSUB: MIR_insn_code_t = 42;
98pub const MIR_LDSUB: MIR_insn_code_t = 43;
99pub const MIR_MUL: MIR_insn_code_t = 44;
100pub const MIR_MULS: MIR_insn_code_t = 45;
101pub const MIR_FMUL: MIR_insn_code_t = 46;
102pub const MIR_DMUL: MIR_insn_code_t = 47;
103pub const MIR_LDMUL: MIR_insn_code_t = 48;
104pub const MIR_DIV: MIR_insn_code_t = 49;
105pub const MIR_DIVS: MIR_insn_code_t = 50;
106pub const MIR_UDIV: MIR_insn_code_t = 51;
107pub const MIR_UDIVS: MIR_insn_code_t = 52;
108pub const MIR_FDIV: MIR_insn_code_t = 53;
109pub const MIR_DDIV: MIR_insn_code_t = 54;
110pub const MIR_LDDIV: MIR_insn_code_t = 55;
111pub const MIR_MOD: MIR_insn_code_t = 56;
112pub const MIR_MODS: MIR_insn_code_t = 57;
113pub const MIR_UMOD: MIR_insn_code_t = 58;
114pub const MIR_UMODS: MIR_insn_code_t = 59;
115pub const MIR_AND: MIR_insn_code_t = 60;
116pub const MIR_ANDS: MIR_insn_code_t = 61;
117pub const MIR_OR: MIR_insn_code_t = 62;
118pub const MIR_ORS: MIR_insn_code_t = 63;
119pub const MIR_XOR: MIR_insn_code_t = 64;
120pub const MIR_XORS: MIR_insn_code_t = 65;
121pub const MIR_LSH: MIR_insn_code_t = 66;
122pub const MIR_LSHS: MIR_insn_code_t = 67;
123pub const MIR_RSH: MIR_insn_code_t = 68;
124pub const MIR_RSHS: MIR_insn_code_t = 69;
125pub const MIR_URSH: MIR_insn_code_t = 70;
126pub const MIR_URSHS: MIR_insn_code_t = 71;
127pub const MIR_EQ: MIR_insn_code_t = 72;
128pub const MIR_EQS: MIR_insn_code_t = 73;
129pub const MIR_FEQ: MIR_insn_code_t = 74;
130pub const MIR_DEQ: MIR_insn_code_t = 75;
131pub const MIR_LDEQ: MIR_insn_code_t = 76;
132pub const MIR_NE: MIR_insn_code_t = 77;
133pub const MIR_NES: MIR_insn_code_t = 78;
134pub const MIR_FNE: MIR_insn_code_t = 79;
135pub const MIR_DNE: MIR_insn_code_t = 80;
136pub const MIR_LDNE: MIR_insn_code_t = 81;
137pub const MIR_LT: MIR_insn_code_t = 82;
138pub const MIR_LTS: MIR_insn_code_t = 83;
139pub const MIR_ULT: MIR_insn_code_t = 84;
140pub const MIR_ULTS: MIR_insn_code_t = 85;
141pub const MIR_FLT: MIR_insn_code_t = 86;
142pub const MIR_DLT: MIR_insn_code_t = 87;
143pub const MIR_LDLT: MIR_insn_code_t = 88;
144pub const MIR_LE: MIR_insn_code_t = 89;
145pub const MIR_LES: MIR_insn_code_t = 90;
146pub const MIR_ULE: MIR_insn_code_t = 91;
147pub const MIR_ULES: MIR_insn_code_t = 92;
148pub const MIR_FLE: MIR_insn_code_t = 93;
149pub const MIR_DLE: MIR_insn_code_t = 94;
150pub const MIR_LDLE: MIR_insn_code_t = 95;
151pub const MIR_GT: MIR_insn_code_t = 96;
152pub const MIR_GTS: MIR_insn_code_t = 97;
153pub const MIR_UGT: MIR_insn_code_t = 98;
154pub const MIR_UGTS: MIR_insn_code_t = 99;
155pub const MIR_FGT: MIR_insn_code_t = 100;
156pub const MIR_DGT: MIR_insn_code_t = 101;
157pub const MIR_LDGT: MIR_insn_code_t = 102;
158pub const MIR_GE: MIR_insn_code_t = 103;
159pub const MIR_GES: MIR_insn_code_t = 104;
160pub const MIR_UGE: MIR_insn_code_t = 105;
161pub const MIR_UGES: MIR_insn_code_t = 106;
162pub const MIR_FGE: MIR_insn_code_t = 107;
163pub const MIR_DGE: MIR_insn_code_t = 108;
164pub const MIR_LDGE: MIR_insn_code_t = 109;
165pub const MIR_ADDO: MIR_insn_code_t = 110;
166pub const MIR_ADDOS: MIR_insn_code_t = 111;
167pub const MIR_SUBO: MIR_insn_code_t = 112;
168pub const MIR_SUBOS: MIR_insn_code_t = 113;
169pub const MIR_MULO: MIR_insn_code_t = 114;
170pub const MIR_MULOS: MIR_insn_code_t = 115;
171pub const MIR_UMULO: MIR_insn_code_t = 116;
172pub const MIR_UMULOS: MIR_insn_code_t = 117;
173pub const MIR_JMP: MIR_insn_code_t = 118;
174pub const MIR_BT: MIR_insn_code_t = 119;
175pub const MIR_BTS: MIR_insn_code_t = 120;
176pub const MIR_BF: MIR_insn_code_t = 121;
177pub const MIR_BFS: MIR_insn_code_t = 122;
178pub const MIR_BEQ: MIR_insn_code_t = 123;
179pub const MIR_BEQS: MIR_insn_code_t = 124;
180pub const MIR_FBEQ: MIR_insn_code_t = 125;
181pub const MIR_DBEQ: MIR_insn_code_t = 126;
182pub const MIR_LDBEQ: MIR_insn_code_t = 127;
183pub const MIR_BNE: MIR_insn_code_t = 128;
184pub const MIR_BNES: MIR_insn_code_t = 129;
185pub const MIR_FBNE: MIR_insn_code_t = 130;
186pub const MIR_DBNE: MIR_insn_code_t = 131;
187pub const MIR_LDBNE: MIR_insn_code_t = 132;
188pub const MIR_BLT: MIR_insn_code_t = 133;
189pub const MIR_BLTS: MIR_insn_code_t = 134;
190pub const MIR_UBLT: MIR_insn_code_t = 135;
191pub const MIR_UBLTS: MIR_insn_code_t = 136;
192pub const MIR_FBLT: MIR_insn_code_t = 137;
193pub const MIR_DBLT: MIR_insn_code_t = 138;
194pub const MIR_LDBLT: MIR_insn_code_t = 139;
195pub const MIR_BLE: MIR_insn_code_t = 140;
196pub const MIR_BLES: MIR_insn_code_t = 141;
197pub const MIR_UBLE: MIR_insn_code_t = 142;
198pub const MIR_UBLES: MIR_insn_code_t = 143;
199pub const MIR_FBLE: MIR_insn_code_t = 144;
200pub const MIR_DBLE: MIR_insn_code_t = 145;
201pub const MIR_LDBLE: MIR_insn_code_t = 146;
202pub const MIR_BGT: MIR_insn_code_t = 147;
203pub const MIR_BGTS: MIR_insn_code_t = 148;
204pub const MIR_UBGT: MIR_insn_code_t = 149;
205pub const MIR_UBGTS: MIR_insn_code_t = 150;
206pub const MIR_FBGT: MIR_insn_code_t = 151;
207pub const MIR_DBGT: MIR_insn_code_t = 152;
208pub const MIR_LDBGT: MIR_insn_code_t = 153;
209pub const MIR_BGE: MIR_insn_code_t = 154;
210pub const MIR_BGES: MIR_insn_code_t = 155;
211pub const MIR_UBGE: MIR_insn_code_t = 156;
212pub const MIR_UBGES: MIR_insn_code_t = 157;
213pub const MIR_FBGE: MIR_insn_code_t = 158;
214pub const MIR_DBGE: MIR_insn_code_t = 159;
215pub const MIR_LDBGE: MIR_insn_code_t = 160;
216pub const MIR_BO: MIR_insn_code_t = 161;
217pub const MIR_UBO: MIR_insn_code_t = 162;
218pub const MIR_BNO: MIR_insn_code_t = 163;
219pub const MIR_UBNO: MIR_insn_code_t = 164;
220pub const MIR_LADDR: MIR_insn_code_t = 165;
221pub const MIR_JMPI: MIR_insn_code_t = 166;
222pub const MIR_CALL: MIR_insn_code_t = 167;
223pub const MIR_INLINE: MIR_insn_code_t = 168;
224pub const MIR_JCALL: MIR_insn_code_t = 169;
225pub const MIR_SWITCH: MIR_insn_code_t = 170;
226pub const MIR_RET: MIR_insn_code_t = 171;
227pub const MIR_JRET: MIR_insn_code_t = 172;
228pub const MIR_ALLOCA: MIR_insn_code_t = 173;
229pub const MIR_BSTART: MIR_insn_code_t = 174;
230pub const MIR_BEND: MIR_insn_code_t = 175;
231pub const MIR_VA_ARG: MIR_insn_code_t = 176;
232pub const MIR_VA_BLOCK_ARG: MIR_insn_code_t = 177;
233pub const MIR_VA_START: MIR_insn_code_t = 178;
234pub const MIR_VA_END: MIR_insn_code_t = 179;
235pub const MIR_LABEL: MIR_insn_code_t = 180;
236pub const MIR_UNSPEC: MIR_insn_code_t = 181;
237pub const MIR_PRSET: MIR_insn_code_t = 182;
238pub const MIR_PRBEQ: MIR_insn_code_t = 183;
239pub const MIR_PRBNE: MIR_insn_code_t = 184;
240pub const MIR_USE: MIR_insn_code_t = 185;
241pub const MIR_PHI: MIR_insn_code_t = 186;
242pub const MIR_INVALID_INSN: MIR_insn_code_t = 187;
243pub const MIR_INSN_BOUND: MIR_insn_code_t = 188;
244pub type MIR_insn_code_t = ::std::os::raw::c_uint;
245pub const MIR_T_I8: MIR_type_t = 0;
246pub const MIR_T_U8: MIR_type_t = 1;
247pub const MIR_T_I16: MIR_type_t = 2;
248pub const MIR_T_U16: MIR_type_t = 3;
249pub const MIR_T_I32: MIR_type_t = 4;
250pub const MIR_T_U32: MIR_type_t = 5;
251pub const MIR_T_I64: MIR_type_t = 6;
252pub const MIR_T_U64: MIR_type_t = 7;
253pub const MIR_T_F: MIR_type_t = 8;
254pub const MIR_T_D: MIR_type_t = 9;
255pub const MIR_T_LD: MIR_type_t = 10;
256pub const MIR_T_P: MIR_type_t = 11;
257pub const MIR_T_BLK: MIR_type_t = 12;
258pub const MIR_T_RBLK: MIR_type_t = 17;
259pub const MIR_T_UNDEF: MIR_type_t = 18;
260pub const MIR_T_BOUND: MIR_type_t = 19;
261pub type MIR_type_t = ::std::os::raw::c_uint;
262pub type MIR_scale_t = u8;
263pub type MIR_disp_t = i64;
264pub type MIR_reg_t = u32;
265#[repr(C)]
266#[derive(Copy, Clone)]
267pub union MIR_imm_t {
268 pub i: i64,
269 pub u: u64,
270 pub f: f32,
271 pub d: f64,
272 pub ld: f64,
273}
274pub type MIR_alias_t = u32;
275pub type MIR_label_t = *mut MIR_insn;
276pub type MIR_name_t = *const ::std::os::raw::c_char;
277pub const MIR_OP_UNDEF: MIR_op_mode_t = 0;
278pub const MIR_OP_REG: MIR_op_mode_t = 1;
279pub const MIR_OP_VAR: MIR_op_mode_t = 2;
280pub const MIR_OP_INT: MIR_op_mode_t = 3;
281pub const MIR_OP_UINT: MIR_op_mode_t = 4;
282pub const MIR_OP_FLOAT: MIR_op_mode_t = 5;
283pub const MIR_OP_DOUBLE: MIR_op_mode_t = 6;
284pub const MIR_OP_LDOUBLE: MIR_op_mode_t = 7;
285pub const MIR_OP_REF: MIR_op_mode_t = 8;
286pub const MIR_OP_STR: MIR_op_mode_t = 9;
287pub const MIR_OP_MEM: MIR_op_mode_t = 10;
288pub const MIR_OP_VAR_MEM: MIR_op_mode_t = 11;
289pub const MIR_OP_LABEL: MIR_op_mode_t = 12;
290pub const MIR_OP_BOUND: MIR_op_mode_t = 13;
291pub type MIR_op_mode_t = ::std::os::raw::c_uint;
292pub type MIR_item_t = *mut MIR_item;
293#[repr(C)]
294#[derive(Debug, Copy, Clone)]
295pub struct MIR_str {
296 pub len: usize,
297 pub s: *const ::std::os::raw::c_char,
298}
299pub type MIR_str_t = MIR_str;
300pub type MIR_insn_t = *mut MIR_insn;
301#[repr(C)]
302#[derive(Debug, Copy, Clone)]
303pub struct DLIST_LINK_MIR_insn_t {
304 pub prev: MIR_insn_t,
305 pub next: MIR_insn_t,
306}
307#[repr(C)]
308#[derive(Debug, Copy, Clone)]
309pub struct DLIST_MIR_insn_t {
310 pub head: MIR_insn_t,
311 pub tail: MIR_insn_t,
312}
313#[repr(C)]
314#[derive(Debug, Copy, Clone)]
315pub struct MIR_var {
316 pub type_: MIR_type_t,
317 pub name: *const ::std::os::raw::c_char,
318 pub size: usize,
319}
320pub type MIR_var_t = MIR_var;
321#[repr(C)]
322#[derive(Debug, Copy, Clone)]
323pub struct VARR_MIR_var_t {
324 pub els_num: usize,
325 pub size: usize,
326 pub varr: *mut MIR_var_t,
327}
328#[repr(C)]
329#[derive(Debug, Copy, Clone)]
330pub struct MIR_func {
331 pub name: *const ::std::os::raw::c_char,
332 pub func_item: MIR_item_t,
333 pub original_vars_num: usize,
334 pub insns: DLIST_MIR_insn_t,
335 pub original_insns: DLIST_MIR_insn_t,
336 pub nres: u32,
337 pub nargs: u32,
338 pub last_temp_num: u32,
339 pub n_inlines: u32,
340 pub res_types: *mut MIR_type_t,
341 pub vararg_p: ::std::os::raw::c_char,
342 pub expr_p: ::std::os::raw::c_char,
343 pub jret_p: ::std::os::raw::c_char,
344 pub vars: *mut VARR_MIR_var_t,
345 pub global_vars: *mut VARR_MIR_var_t,
346 pub machine_code: *mut ::std::os::raw::c_void,
347 pub call_addr: *mut ::std::os::raw::c_void,
348 pub internal: *mut ::std::os::raw::c_void,
349 pub first_lref: *mut MIR_lref_data,
350}
351pub type MIR_func_t = *mut MIR_func;
352#[repr(C)]
353#[derive(Debug, Copy, Clone)]
354pub struct MIR_proto {
355 pub name: *const ::std::os::raw::c_char,
356 pub nres: u32,
357 pub res_types: *mut MIR_type_t,
358 pub vararg_p: ::std::os::raw::c_char,
359 pub args: *mut VARR_MIR_var_t,
360}
361pub type MIR_proto_t = *mut MIR_proto;
362#[repr(C)]
363#[derive(Copy, Clone)]
364pub struct MIR_data {
365 pub name: *const ::std::os::raw::c_char,
366 pub el_type: MIR_type_t,
367 pub nel: usize,
368 pub u: MIR_data__bindgen_ty_1,
369}
370#[repr(C)]
371#[derive(Copy, Clone)]
372pub union MIR_data__bindgen_ty_1 {
373 pub d: f64,
374 pub els: [u8; 1usize],
375}
376pub type MIR_data_t = *mut MIR_data;
377#[repr(C)]
378#[derive(Debug, Copy, Clone)]
379pub struct MIR_ref_data {
380 pub name: *const ::std::os::raw::c_char,
381 pub ref_item: MIR_item_t,
382 pub disp: i64,
383 pub load_addr: *mut ::std::os::raw::c_void,
384}
385pub type MIR_ref_data_t = *mut MIR_ref_data;
386#[repr(C)]
387#[derive(Debug, Copy, Clone)]
388pub struct MIR_lref_data {
389 pub name: *const ::std::os::raw::c_char,
390 pub label: MIR_label_t,
391 pub label2: MIR_label_t,
392 pub orig_label: MIR_label_t,
393 pub orig_label2: MIR_label_t,
394 pub disp: i64,
395 pub load_addr: *mut ::std::os::raw::c_void,
396 pub next: *mut MIR_lref_data,
397}
398pub type MIR_lref_data_t = *mut MIR_lref_data;
399#[repr(C)]
400#[derive(Debug, Copy, Clone)]
401pub struct MIR_expr_data {
402 pub name: *const ::std::os::raw::c_char,
403 pub expr_item: MIR_item_t,
404 pub load_addr: *mut ::std::os::raw::c_void,
405}
406pub type MIR_expr_data_t = *mut MIR_expr_data;
407#[repr(C)]
408#[derive(Debug, Copy, Clone)]
409pub struct MIR_bss {
410 pub name: *const ::std::os::raw::c_char,
411 pub len: u64,
412}
413pub type MIR_bss_t = *mut MIR_bss;
414pub type MIR_module_t = *mut MIR_module;
415#[repr(C)]
416#[derive(Debug, Copy, Clone)]
417pub struct DLIST_LINK_MIR_item_t {
418 pub prev: MIR_item_t,
419 pub next: MIR_item_t,
420}
421pub const MIR_func_item: MIR_item_type_t = 0;
422pub const MIR_proto_item: MIR_item_type_t = 1;
423pub const MIR_import_item: MIR_item_type_t = 2;
424pub const MIR_export_item: MIR_item_type_t = 3;
425pub const MIR_forward_item: MIR_item_type_t = 4;
426pub const MIR_data_item: MIR_item_type_t = 5;
427pub const MIR_ref_data_item: MIR_item_type_t = 6;
428pub const MIR_lref_data_item: MIR_item_type_t = 7;
429pub const MIR_expr_data_item: MIR_item_type_t = 8;
430pub const MIR_bss_item: MIR_item_type_t = 9;
431pub type MIR_item_type_t = ::std::os::raw::c_uint;
432#[repr(C)]
433#[derive(Copy, Clone)]
434pub struct MIR_item {
435 pub data: *mut ::std::os::raw::c_void,
436 pub module: MIR_module_t,
437 pub item_link: DLIST_LINK_MIR_item_t,
438 pub item_type: MIR_item_type_t,
439 pub ref_def: MIR_item_t,
440 pub addr: *mut ::std::os::raw::c_void,
441 pub export_p: ::std::os::raw::c_char,
442 pub section_head_p: ::std::os::raw::c_char,
443 pub u: MIR_item__bindgen_ty_1,
444}
445#[repr(C)]
446#[derive(Copy, Clone)]
447pub union MIR_item__bindgen_ty_1 {
448 pub func: MIR_func_t,
449 pub proto: MIR_proto_t,
450 pub import_id: MIR_name_t,
451 pub export_id: MIR_name_t,
452 pub forward_id: MIR_name_t,
453 pub data: MIR_data_t,
454 pub ref_data: MIR_ref_data_t,
455 pub lref_data: MIR_lref_data_t,
456 pub expr_data: MIR_expr_data_t,
457 pub bss: MIR_bss_t,
458}
459#[repr(C)]
460#[derive(Debug, Copy, Clone)]
461pub struct DLIST_MIR_item_t {
462 pub head: MIR_item_t,
463 pub tail: MIR_item_t,
464}
465#[repr(C)]
466#[derive(Debug, Copy, Clone)]
467pub struct DLIST_LINK_MIR_module_t {
468 pub prev: MIR_module_t,
469 pub next: MIR_module_t,
470}
471#[repr(C)]
472#[derive(Debug, Copy, Clone)]
473pub struct MIR_module {
474 pub data: *mut ::std::os::raw::c_void,
475 pub name: *const ::std::os::raw::c_char,
476 pub items: DLIST_MIR_item_t,
477 pub module_link: DLIST_LINK_MIR_module_t,
478 pub last_temp_item_num: u32,
479}
480#[repr(C)]
481#[derive(Debug, Copy, Clone)]
482pub struct DLIST_MIR_module_t {
483 pub head: MIR_module_t,
484 pub tail: MIR_module_t,
485}
486#[repr(C)]
487#[derive(Debug, Copy, Clone)]
488pub struct MIR_context {
489 _unused: [u8; 0],
490}
491pub type MIR_context_t = *mut MIR_context;
492#[repr(C)]
493#[derive(Copy, Clone)]
494pub union MIR_val_t {
495 pub ic: MIR_insn_code_t,
496 pub a: *mut ::std::os::raw::c_void,
497 pub i: i64,
498 pub u: u64,
499 pub f: f32,
500 pub d: f64,
501 pub ld: f64,
502}
503unsafe extern "C-unwind" {
504 pub fn _MIR_get_api_version() -> f64;
505 pub fn _MIR_init() -> MIR_context_t;
506 pub fn MIR_finish(ctx: MIR_context_t);
507 pub fn MIR_new_module(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_module_t;
508 pub fn MIR_get_module_list(ctx: MIR_context_t) -> *mut DLIST_MIR_module_t;
509 pub fn MIR_new_import(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
510 pub fn MIR_new_export(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
511 pub fn MIR_new_forward(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_item_t;
512 pub fn MIR_new_bss(
513 ctx: MIR_context_t,
514 name: *const ::std::os::raw::c_char,
515 len: usize,
516 ) -> MIR_item_t;
517 pub fn MIR_new_data(
518 ctx: MIR_context_t,
519 name: *const ::std::os::raw::c_char,
520 el_type: MIR_type_t,
521 nel: usize,
522 els: *const ::std::os::raw::c_void,
523 ) -> MIR_item_t;
524 pub fn MIR_new_string_data(
525 ctx: MIR_context_t,
526 name: *const ::std::os::raw::c_char,
527 str_: MIR_str_t,
528 ) -> MIR_item_t;
529 pub fn MIR_new_ref_data(
530 ctx: MIR_context_t,
531 name: *const ::std::os::raw::c_char,
532 item: MIR_item_t,
533 disp: i64,
534 ) -> MIR_item_t;
535 pub fn MIR_new_lref_data(
536 ctx: MIR_context_t,
537 name: *const ::std::os::raw::c_char,
538 label: MIR_label_t,
539 label2: MIR_label_t,
540 disp: i64,
541 ) -> MIR_item_t;
542 pub fn MIR_new_expr_data(
543 ctx: MIR_context_t,
544 name: *const ::std::os::raw::c_char,
545 expr_item: MIR_item_t,
546 ) -> MIR_item_t;
547 pub fn MIR_new_proto_arr(
548 ctx: MIR_context_t,
549 name: *const ::std::os::raw::c_char,
550 nres: usize,
551 res_types: *mut MIR_type_t,
552 nargs: usize,
553 vars: *mut MIR_var_t,
554 ) -> MIR_item_t;
555 pub fn MIR_new_proto(
556 ctx: MIR_context_t,
557 name: *const ::std::os::raw::c_char,
558 nres: usize,
559 res_types: *mut MIR_type_t,
560 nargs: usize,
561 ...
562 ) -> MIR_item_t;
563 pub fn MIR_new_vararg_proto_arr(
564 ctx: MIR_context_t,
565 name: *const ::std::os::raw::c_char,
566 nres: usize,
567 res_types: *mut MIR_type_t,
568 nargs: usize,
569 vars: *mut MIR_var_t,
570 ) -> MIR_item_t;
571 pub fn MIR_new_vararg_proto(
572 ctx: MIR_context_t,
573 name: *const ::std::os::raw::c_char,
574 nres: usize,
575 res_types: *mut MIR_type_t,
576 nargs: usize,
577 ...
578 ) -> MIR_item_t;
579 pub fn MIR_new_func_arr(
580 ctx: MIR_context_t,
581 name: *const ::std::os::raw::c_char,
582 nres: usize,
583 res_types: *mut MIR_type_t,
584 nargs: usize,
585 vars: *mut MIR_var_t,
586 ) -> MIR_item_t;
587 pub fn MIR_new_func(
588 ctx: MIR_context_t,
589 name: *const ::std::os::raw::c_char,
590 nres: usize,
591 res_types: *mut MIR_type_t,
592 nargs: usize,
593 ...
594 ) -> MIR_item_t;
595 pub fn MIR_new_vararg_func_arr(
596 ctx: MIR_context_t,
597 name: *const ::std::os::raw::c_char,
598 nres: usize,
599 res_types: *mut MIR_type_t,
600 nargs: usize,
601 vars: *mut MIR_var_t,
602 ) -> MIR_item_t;
603 pub fn MIR_new_vararg_func(
604 ctx: MIR_context_t,
605 name: *const ::std::os::raw::c_char,
606 nres: usize,
607 res_types: *mut MIR_type_t,
608 nargs: usize,
609 ...
610 ) -> MIR_item_t;
611 pub fn MIR_item_name(ctx: MIR_context_t, item: MIR_item_t) -> *const ::std::os::raw::c_char;
612 pub fn MIR_get_item_func(ctx: MIR_context_t, item: MIR_item_t) -> MIR_func_t;
613 pub fn MIR_new_func_reg(
614 ctx: MIR_context_t,
615 func: MIR_func_t,
616 type_: MIR_type_t,
617 name: *const ::std::os::raw::c_char,
618 ) -> MIR_reg_t;
619 pub fn MIR_new_global_func_reg(
620 ctx: MIR_context_t,
621 func: MIR_func_t,
622 type_: MIR_type_t,
623 name: *const ::std::os::raw::c_char,
624 hard_reg_name: *const ::std::os::raw::c_char,
625 ) -> MIR_reg_t;
626 pub fn MIR_finish_func(ctx: MIR_context_t);
627 pub fn MIR_finish_module(ctx: MIR_context_t);
628 pub fn MIR_get_error_func(ctx: MIR_context_t) -> MIR_error_func_t;
629 pub fn MIR_set_error_func(ctx: MIR_context_t, func: MIR_error_func_t);
630 pub fn MIR_get_func_redef_permission_p(ctx: MIR_context_t) -> ::std::os::raw::c_int;
631 pub fn MIR_set_func_redef_permission(ctx: MIR_context_t, flag_p: ::std::os::raw::c_int);
632 pub fn MIR_new_insn_arr(
633 ctx: MIR_context_t,
634 code: MIR_insn_code_t,
635 nops: usize,
636 ops: *mut MIR_op_t,
637 ) -> MIR_insn_t;
638 pub fn MIR_new_insn(ctx: MIR_context_t, code: MIR_insn_code_t, ...) -> MIR_insn_t;
639 pub fn MIR_new_call_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
640 pub fn MIR_new_jcall_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
641 pub fn MIR_new_ret_insn(ctx: MIR_context_t, nops: usize, ...) -> MIR_insn_t;
642 pub fn MIR_copy_insn(ctx: MIR_context_t, insn: MIR_insn_t) -> MIR_insn_t;
643 pub fn MIR_insn_name(
644 ctx: MIR_context_t,
645 code: MIR_insn_code_t,
646 ) -> *const ::std::os::raw::c_char;
647 pub fn MIR_insn_nops(ctx: MIR_context_t, insn: MIR_insn_t) -> usize;
648 pub fn MIR_insn_op_mode(
649 ctx: MIR_context_t,
650 insn: MIR_insn_t,
651 nop: usize,
652 out_p: *mut ::std::os::raw::c_int,
653 ) -> MIR_op_mode_t;
654 pub fn MIR_new_label(ctx: MIR_context_t) -> MIR_insn_t;
655 pub fn MIR_reg(
656 ctx: MIR_context_t,
657 reg_name: *const ::std::os::raw::c_char,
658 func: MIR_func_t,
659 ) -> MIR_reg_t;
660 pub fn MIR_reg_type(ctx: MIR_context_t, reg: MIR_reg_t, func: MIR_func_t) -> MIR_type_t;
661 pub fn MIR_reg_name(
662 ctx: MIR_context_t,
663 reg: MIR_reg_t,
664 func: MIR_func_t,
665 ) -> *const ::std::os::raw::c_char;
666 pub fn MIR_reg_hard_reg_name(
667 ctx: MIR_context_t,
668 reg: MIR_reg_t,
669 func: MIR_func_t,
670 ) -> *const ::std::os::raw::c_char;
671 pub fn MIR_alias_name(ctx: MIR_context_t, alias: MIR_alias_t) -> *const ::std::os::raw::c_char;
672 pub fn MIR_alias(ctx: MIR_context_t, name: *const ::std::os::raw::c_char) -> MIR_alias_t;
673 pub fn MIR_new_reg_op(ctx: MIR_context_t, reg: MIR_reg_t) -> MIR_op_t;
674 pub fn MIR_new_int_op(ctx: MIR_context_t, v: i64) -> MIR_op_t;
675 pub fn MIR_new_uint_op(ctx: MIR_context_t, v: u64) -> MIR_op_t;
676 pub fn MIR_new_float_op(ctx: MIR_context_t, v: f32) -> MIR_op_t;
677 pub fn MIR_new_double_op(ctx: MIR_context_t, v: f64) -> MIR_op_t;
678 pub fn MIR_new_ldouble_op(ctx: MIR_context_t, v: f64) -> MIR_op_t;
679 pub fn MIR_new_ref_op(ctx: MIR_context_t, item: MIR_item_t) -> MIR_op_t;
680 pub fn MIR_new_str_op(ctx: MIR_context_t, str_: MIR_str_t) -> MIR_op_t;
681 pub fn MIR_new_mem_op(
682 ctx: MIR_context_t,
683 type_: MIR_type_t,
684 disp: MIR_disp_t,
685 base: MIR_reg_t,
686 index: MIR_reg_t,
687 scale: MIR_scale_t,
688 ) -> MIR_op_t;
689 pub fn MIR_new_alias_mem_op(
690 ctx: MIR_context_t,
691 type_: MIR_type_t,
692 disp: MIR_disp_t,
693 base: MIR_reg_t,
694 index: MIR_reg_t,
695 scale: MIR_scale_t,
696 alias: MIR_alias_t,
697 noalias: MIR_alias_t,
698 ) -> MIR_op_t;
699 pub fn MIR_new_label_op(ctx: MIR_context_t, label: MIR_label_t) -> MIR_op_t;
700 pub fn MIR_op_eq_p(ctx: MIR_context_t, op1: MIR_op_t, op2: MIR_op_t) -> ::std::os::raw::c_int;
701 pub fn MIR_op_hash_step(ctx: MIR_context_t, h: htab_hash_t, op: MIR_op_t) -> htab_hash_t;
702 pub fn MIR_append_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
703 pub fn MIR_prepend_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
704 pub fn MIR_insert_insn_after(
705 ctx: MIR_context_t,
706 func: MIR_item_t,
707 after: MIR_insn_t,
708 insn: MIR_insn_t,
709 );
710 pub fn MIR_insert_insn_before(
711 ctx: MIR_context_t,
712 func: MIR_item_t,
713 before: MIR_insn_t,
714 insn: MIR_insn_t,
715 );
716 pub fn MIR_remove_insn(ctx: MIR_context_t, func: MIR_item_t, insn: MIR_insn_t);
717 pub fn MIR_change_module_ctx(old_ctx: MIR_context_t, m: MIR_module_t, new_ctx: MIR_context_t);
718 pub fn MIR_reverse_branch_code(code: MIR_insn_code_t) -> MIR_insn_code_t;
719 pub fn MIR_type_str(ctx: MIR_context_t, tp: MIR_type_t) -> *const ::std::os::raw::c_char;
720 pub fn MIR_output_str(ctx: MIR_context_t, f: *mut FILE, str_: MIR_str_t);
721 pub fn MIR_output_op(ctx: MIR_context_t, f: *mut FILE, op: MIR_op_t, func: MIR_func_t);
722 pub fn MIR_output_insn(
723 ctx: MIR_context_t,
724 f: *mut FILE,
725 insn: MIR_insn_t,
726 func: MIR_func_t,
727 newline_p: ::std::os::raw::c_int,
728 );
729 pub fn MIR_output_item(ctx: MIR_context_t, f: *mut FILE, item: MIR_item_t);
730 pub fn MIR_output_module(ctx: MIR_context_t, f: *mut FILE, module: MIR_module_t);
731 pub fn MIR_output(ctx: MIR_context_t, f: *mut FILE);
732 pub fn MIR_write(ctx: MIR_context_t, f: *mut FILE);
733 pub fn MIR_write_module(ctx: MIR_context_t, f: *mut FILE, module: MIR_module_t);
734 pub fn MIR_read(ctx: MIR_context_t, f: *mut FILE);
735 pub fn MIR_write_with_func(
736 ctx: MIR_context_t,
737 writer_func: ::std::option::Option<
738 unsafe extern "C-unwind" fn(
739 arg1: *mut ::std::os::raw::c_void,
740 arg2: u8,
741 ) -> ::std::os::raw::c_int,
742 >,
743 writer_arg: *mut ::std::os::raw::c_void,
744 );
745 pub fn MIR_write_module_with_func(
746 ctx: MIR_context_t,
747 writer_func: ::std::option::Option<
748 unsafe extern "C-unwind" fn(
749 arg1: *mut ::std::os::raw::c_void,
750 arg2: u8,
751 ) -> ::std::os::raw::c_int,
752 >,
753 module: MIR_module_t,
754 writer_arg: *mut ::std::os::raw::c_void,
755 );
756 pub fn MIR_read_with_func(
757 ctx: MIR_context_t,
758 reader_func: ::std::option::Option<
759 unsafe extern "C-unwind" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
760 >,
761 reader_arg: *mut ::std::os::raw::c_void,
762 );
763 pub fn MIR_scan_string(ctx: MIR_context_t, str_: *const ::std::os::raw::c_char);
764 pub fn MIR_get_global_item(
765 ctx: MIR_context_t,
766 name: *const ::std::os::raw::c_char,
767 ) -> MIR_item_t;
768 pub fn MIR_load_module(ctx: MIR_context_t, m: MIR_module_t);
769 pub fn MIR_load_external(
770 ctx: MIR_context_t,
771 name: *const ::std::os::raw::c_char,
772 addr: *mut ::std::os::raw::c_void,
773 );
774 pub fn MIR_link(
775 ctx: MIR_context_t,
776 set_interface: ::std::option::Option<
777 unsafe extern "C-unwind" fn(ctx: MIR_context_t, item: MIR_item_t),
778 >,
779 import_resolver: ::std::option::Option<
780 unsafe extern "C-unwind" fn(
781 arg1: *mut ::std::os::raw::c_void,
782 arg2: *const ::std::os::raw::c_char,
783 ) -> *mut ::std::os::raw::c_void,
784 >,
785 resolver_arg: *mut ::std::os::raw::c_void,
786 );
787 pub fn MIR_interp(
788 ctx: MIR_context_t,
789 func_item: MIR_item_t,
790 results: *mut MIR_val_t,
791 nargs: usize,
792 ...
793 );
794 pub fn MIR_interp_arr(
795 ctx: MIR_context_t,
796 func_item: MIR_item_t,
797 results: *mut MIR_val_t,
798 nargs: usize,
799 vals: *mut MIR_val_t,
800 );
801 pub fn MIR_set_interp_interface(ctx: MIR_context_t, func_item: MIR_item_t);
802}