ptx_parser/parser/instruction/
elect_sync.rs

1//! Original PTX specification:
2//!
3//! elect.sync d|p, membermask;
4
5#![allow(unused)]
6
7use crate::lexer::PtxToken;
8use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
9use crate::r#type::common::*;
10
11pub mod section_0 {
12    use super::*;
13    use crate::r#type::instruction::elect_sync::section_0::*;
14
15    impl PtxParser for ElectSync {
16        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
17            stream.expect_string("elect")?;
18            stream.expect_string(".sync")?;
19            let sync = ();
20            stream.expect_complete()?;
21            let d = GeneralOperand::parse(stream)?;
22            stream.expect(&PtxToken::Pipe)?;
23            let p = GeneralOperand::parse(stream)?;
24            stream.expect_complete()?;
25            stream.expect(&PtxToken::Comma)?;
26            let membermask = GeneralOperand::parse(stream)?;
27            stream.expect_complete()?;
28            stream.expect_complete()?;
29            stream.expect(&PtxToken::Semicolon)?;
30            Ok(ElectSync {
31                sync,
32                d,
33                p,
34                membermask,
35            })
36        }
37    }
38}