ptx_parser/parser/instruction/
pmevent.rs

1//! Original PTX specification:
2//!
3//! pmevent a;         // trigger a single performance monitor event
4//! pmevent.mask a;    // trigger one or more performance monitor events
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::pmevent::section_0::*;
15
16    impl PtxParser for Pmevent {
17        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
18            stream.expect_string("pmevent")?;
19            let a = GeneralOperand::parse(stream)?;
20            stream.expect_complete()?;
21            stream.expect_complete()?;
22            stream.expect(&PtxToken::Semicolon)?;
23            Ok(Pmevent {
24                a,
25            })
26        }
27    }
28
29
30    impl PtxParser for PmeventMask {
31        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
32            stream.expect_string("pmevent")?;
33            stream.expect_string(".mask")?;
34            let mask = ();
35            stream.expect_complete()?;
36            let a = GeneralOperand::parse(stream)?;
37            stream.expect_complete()?;
38            stream.expect_complete()?;
39            stream.expect(&PtxToken::Semicolon)?;
40            Ok(PmeventMask {
41                mask,
42                a,
43            })
44        }
45    }
46
47
48}
49