ptx_parser/parser/instruction/
brx_idx.rs

1//! Original PTX specification:
2//!
3//! brx.idx{.uni} index, tlist;
4//! brx.idx{.uni} index, tlist;
5
6#![allow(unused)]
7
8use crate::lexer::PtxToken;
9use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
10use crate::r#type::common::*;
11
12pub mod section_0 {
13    use super::*;
14    use crate::r#type::instruction::brx_idx::section_0::*;
15
16    impl PtxParser for BrxIdxUni {
17        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
18            stream.expect_string("brx")?;
19            stream.expect_string(".idx")?;
20            let idx = ();
21            stream.expect_complete()?;
22            let saved_pos = stream.position();
23            let uni = stream.expect_string(".uni").is_ok();
24            if !uni {
25                stream.set_position(saved_pos);
26            }
27            stream.expect_complete()?;
28            let index = GeneralOperand::parse(stream)?;
29            stream.expect_complete()?;
30            stream.expect(&PtxToken::Comma)?;
31            let tlist = GeneralOperand::parse(stream)?;
32            stream.expect_complete()?;
33            stream.expect_complete()?;
34            stream.expect(&PtxToken::Semicolon)?;
35            Ok(BrxIdxUni {
36                idx,
37                uni,
38                index,
39                tlist,
40            })
41        }
42    }
43
44
45    impl PtxParser for BrxIdxUni1 {
46        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
47            stream.expect_string("brx")?;
48            stream.expect_string(".idx")?;
49            let idx = ();
50            stream.expect_complete()?;
51            let saved_pos = stream.position();
52            let uni = stream.expect_string(".uni").is_ok();
53            if !uni {
54                stream.set_position(saved_pos);
55            }
56            stream.expect_complete()?;
57            let index = GeneralOperand::parse(stream)?;
58            stream.expect_complete()?;
59            stream.expect(&PtxToken::Comma)?;
60            let tlist = GeneralOperand::parse(stream)?;
61            stream.expect_complete()?;
62            stream.expect_complete()?;
63            stream.expect(&PtxToken::Semicolon)?;
64            Ok(BrxIdxUni1 {
65                idx,
66                uni,
67                index,
68                tlist,
69            })
70        }
71    }
72
73
74}
75