1use crate::util::*;
2use crate::*;
3use core::cell::*;
4use core::mem::*;
5use core::sync::atomic::{AtomicUsize, Ordering};
6
7pub enum ControlKind {
11 BranchNeqZero {
12 conditional: u32,
13 id_if_true: u32,
14 id_if_false: u32,
15 },
16 Jump {
17 id: u32,
18 },
19}
20
21pub enum OpKind {
22 StackStore { offset: u16, size: u8, id: u32 },
24 Store8 { location_id: u32, value_id: u32 },
25 Store16 { location_id: u32, value_id: u32 },
26 Store32 { location_id: u32, value_id: u32 },
27 Store64 { location_id: u32, value_id: u32 },
28
29 StackLoad { offset: u16, size: u8 },
30 Load8 { location_id: u32 },
31 Load16 { location_id: u32 },
32 Load32 { location_id: u32 },
33 Load64 { location_id: u32 },
34
35 Forward { block_input_id: u32, id: u32 },
36 BlockInput {},
37
38 Add { op1: u32, op2: u32 },
39}
40
41pub struct BasicBlock {
42 ops: [OpKind],
43}
44
45pub struct Graph {}