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 { a })
24        }
25    }
26
27    impl PtxParser for PmeventMask {
28        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
29            stream.expect_string("pmevent")?;
30            stream.expect_string(".mask")?;
31            let mask = ();
32            stream.expect_complete()?;
33            let a = GeneralOperand::parse(stream)?;
34            stream.expect_complete()?;
35            stream.expect_complete()?;
36            stream.expect(&PtxToken::Semicolon)?;
37            Ok(PmeventMask { mask, a })
38        }
39    }
40}