liu/
graph.rs

1use crate::util::*;
2use crate::*;
3use core::cell::*;
4use core::mem::*;
5use core::sync::atomic::{AtomicUsize, Ordering};
6
7// bruh, idk what the deal is. idk what kind of system to use here. we'll figure
8// it out later ig.
9
10pub 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    // Stores: no output value
23    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 {}