gaia_assembler/types/mod.rs
1//! Gaia 汇编器核心类型定义
2
3use serde::{Deserialize, Serialize};
4
5/// Gaia 地址空间
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
7pub enum AddressSpace {
8 /// 通用/默认地址空间
9 Generic,
10 /// 栈/局部内存
11 Local,
12 /// 全局内存
13 Global,
14 /// 共享内存 (GPU LDS)
15 Shared,
16 /// 常量内存
17 Constant,
18 /// 托管堆 (JVM/CLR)
19 Managed,
20}
21
22/// Gaia 类型系统
23#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
24pub enum GaiaType {
25 // --- 标量类型 ---
26 /// 1位布尔类型
27 Bool,
28 /// 8位有符号整数
29 I8,
30 /// 8位无符号整数
31 U8,
32 /// 16位有符号整数
33 I16,
34 /// 16位无符号整数
35 U16,
36 /// 32位有符号整数
37 I32,
38 /// 32位无符号整数
39 U32,
40 /// 64位有符号整数
41 I64,
42 /// 64位无符号整数
43 U64,
44 /// 16位半精度浮点数
45 F16,
46 /// 32位单精度浮点数
47 F32,
48 /// 64位双精度浮点数
49 F64,
50
51 // --- 复合类型 ---
52 /// 指针类型 (指向类型, 地址空间)
53 Pointer(Box<GaiaType>, AddressSpace),
54 /// 数组类型 (元素类型, 长度)
55 Array(Box<GaiaType>, usize),
56 /// 向量类型 (元素类型, 数量)
57 Vector(Box<GaiaType>, usize),
58 /// 结构体类型 (名称/ID)
59 Struct(String),
60 /// 字符串类型 (托管或原始)
61 String,
62
63 // --- 托管类型 (Managed) ---
64 /// 动态对象类型 (Python/JS)
65 Object,
66 /// 托管类 (JVM/CLR)
67 Class(String),
68 /// 接口/特征 (Interface/Trait)
69 Interface(String),
70 /// 动态/任意类型 (Variant)
71 Any,
72
73 // --- 领域特定类型 (Domain) ---
74 /// 张量类型 (元素类型, 形状)
75 /// 形状中使用 -1 表示动态维度
76 Tensor(Box<GaiaType>, Vec<isize>),
77
78 // --- 特殊类型 ---
79 /// 空类型
80 Void,
81 /// 不透明类型 (用于外部引用)
82 Opaque(String),
83 /// 函数指针
84 FunctionPtr(Box<GaiaSignature>),
85}
86
87/// 函数签名
88#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
89pub struct GaiaSignature {
90 pub params: Vec<GaiaType>,
91 pub return_type: GaiaType,
92}