singe-ptx 0.1.0-alpha.3

CUDA PTX parser, AST, and instruction metadata utilities.
Documentation
use crate::ast::Span;

#[derive(Debug, Clone, PartialEq)]
pub enum Operand {
    Register { span: Span, name: String },
    Immediate { span: Span, immediate: Immediate },
    Address { span: Span, address: Address },
    Vector { span: Span, elements: Vec<Operand> },
    Label { span: Span, name: String },
    BitBucket { span: Span },
}

#[derive(Debug, Clone, PartialEq)]
pub enum Immediate {
    Integer { span: Span, value: i64 },
    UnsignedInteger { span: Span, value: u64 },
    Float { span: Span, value: f64 },
    HexFloat32 { span: Span, value: f32 },
    HexFloat64 { span: Span, value: f64 },
}

#[derive(Debug, Clone, PartialEq)]
pub enum Address {
    Symbol {
        span: Span,
        name: String,
    },
    SymbolOffset {
        span: Span,
        symbol: String,
        offset: i64,
    },
    RegisterOffset {
        span: Span,
        register: String,
        offset: i64,
    },
}