Skip to main content

singe_ptx/ast/
operand.rs

1use crate::ast::Span;
2
3#[derive(Debug, Clone, PartialEq)]
4pub enum Operand {
5    Register { span: Span, name: String },
6    Immediate { span: Span, immediate: Immediate },
7    Address { span: Span, address: Address },
8    Vector { span: Span, elements: Vec<Operand> },
9    Label { span: Span, name: String },
10    BitBucket { span: Span },
11}
12
13#[derive(Debug, Clone, PartialEq)]
14pub enum Immediate {
15    Integer { span: Span, value: i64 },
16    UnsignedInteger { span: Span, value: u64 },
17    Float { span: Span, value: f64 },
18    HexFloat32 { span: Span, value: f32 },
19    HexFloat64 { span: Span, value: f64 },
20}
21
22#[derive(Debug, Clone, PartialEq)]
23pub enum Address {
24    Symbol {
25        span: Span,
26        name: String,
27    },
28    SymbolOffset {
29        span: Span,
30        symbol: String,
31        offset: i64,
32    },
33    RegisterOffset {
34        span: Span,
35        register: String,
36        offset: i64,
37    },
38}