ptx_parser/parser/instruction/
clusterlaunchcontrol_query_cancel.rs

1//! Original PTX specification:
2//!
3//! clusterlaunchcontrol.query_cancel.is_canceled.pred.b128 pred, try_cancel_response;
4//! clusterlaunchcontrol.query_cancel.get_first_ctaid.v4.b32.b128 {xdim, ydim, zdim, _},  try_cancel_response;
5//! clusterlaunchcontrol.query_cancel{.get_first_ctaid::dimension}.b32.b128 reg, try_cancel_response;
6//! .get_first_ctaid::dimension = { .get_first_ctaid::x, .get_first_ctaid::y, .get_first_ctaid::z };
7
8#![allow(unused)]
9
10use crate::lexer::PtxToken;
11use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
12use crate::r#type::common::*;
13
14pub mod section_0 {
15    use super::*;
16    use crate::r#type::instruction::clusterlaunchcontrol_query_cancel::section_0::*;
17
18    // ============================================================================
19    // Generated enum parsers
20    // ============================================================================
21
22    impl PtxParser for GetFirstCtaidDimension {
23        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
24            // Try GetFirstCtaidX
25            {
26                let saved_pos = stream.position();
27                if stream.expect_string(".get_first_ctaid::x").is_ok() {
28                    return Ok(GetFirstCtaidDimension::GetFirstCtaidX);
29                }
30                stream.set_position(saved_pos);
31            }
32            let saved_pos = stream.position();
33            // Try GetFirstCtaidY
34            {
35                let saved_pos = stream.position();
36                if stream.expect_string(".get_first_ctaid::y").is_ok() {
37                    return Ok(GetFirstCtaidDimension::GetFirstCtaidY);
38                }
39                stream.set_position(saved_pos);
40            }
41            stream.set_position(saved_pos);
42            let saved_pos = stream.position();
43            // Try GetFirstCtaidZ
44            {
45                let saved_pos = stream.position();
46                if stream.expect_string(".get_first_ctaid::z").is_ok() {
47                    return Ok(GetFirstCtaidDimension::GetFirstCtaidZ);
48                }
49                stream.set_position(saved_pos);
50            }
51            stream.set_position(saved_pos);
52            let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
53            let expected = &[".get_first_ctaid::x", ".get_first_ctaid::y", ".get_first_ctaid::z"];
54            let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
55            Err(crate::parser::unexpected_value(span, expected, found))
56        }
57    }
58
59    impl PtxParser for ClusterlaunchcontrolQueryCancelIsCanceledPredB128 {
60        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
61            stream.expect_string("clusterlaunchcontrol")?;
62            stream.expect_string(".query_cancel")?;
63            let query_cancel = ();
64            stream.expect_complete()?;
65            stream.expect_string(".is_canceled")?;
66            let is_canceled = ();
67            stream.expect_complete()?;
68            stream.expect_string(".pred")?;
69            let pred = ();
70            stream.expect_complete()?;
71            stream.expect_string(".b128")?;
72            let b128 = ();
73            stream.expect_complete()?;
74            let pred2 = GeneralOperand::parse(stream)?;
75            stream.expect_complete()?;
76            stream.expect(&PtxToken::Comma)?;
77            let try_cancel_response = GeneralOperand::parse(stream)?;
78            stream.expect_complete()?;
79            stream.expect_complete()?;
80            stream.expect(&PtxToken::Semicolon)?;
81            Ok(ClusterlaunchcontrolQueryCancelIsCanceledPredB128 {
82                query_cancel,
83                is_canceled,
84                pred,
85                b128,
86                pred2,
87                try_cancel_response,
88            })
89        }
90    }
91
92
93    impl PtxParser for ClusterlaunchcontrolQueryCancelGetFirstCtaidV4B32B128 {
94        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
95            stream.expect_string("clusterlaunchcontrol")?;
96            stream.expect_string(".query_cancel")?;
97            let query_cancel = ();
98            stream.expect_complete()?;
99            stream.expect_string(".get_first_ctaid")?;
100            let get_first_ctaid = ();
101            stream.expect_complete()?;
102            stream.expect_string(".v4")?;
103            let v4 = ();
104            stream.expect_complete()?;
105            stream.expect_string(".b32")?;
106            let b32 = ();
107            stream.expect_complete()?;
108            stream.expect_string(".b128")?;
109            let b128 = ();
110            stream.expect_complete()?;
111            let xdim = VectorOperand::parse(stream)?;
112            stream.expect_complete()?;
113            stream.expect(&PtxToken::Comma)?;
114            let try_cancel_response = GeneralOperand::parse(stream)?;
115            stream.expect_complete()?;
116            stream.expect_complete()?;
117            stream.expect(&PtxToken::Semicolon)?;
118            Ok(ClusterlaunchcontrolQueryCancelGetFirstCtaidV4B32B128 {
119                query_cancel,
120                get_first_ctaid,
121                v4,
122                b32,
123                b128,
124                xdim,
125                try_cancel_response,
126            })
127        }
128    }
129
130
131    impl PtxParser for ClusterlaunchcontrolQueryCancelGetFirstCtaidDimensionB32B128 {
132        fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
133            stream.expect_string("clusterlaunchcontrol")?;
134            stream.expect_string(".query_cancel")?;
135            let query_cancel = ();
136            stream.expect_complete()?;
137            let saved_pos = stream.position();
138            let get_first_ctaid_dimension = match GetFirstCtaidDimension::parse(stream) {
139                Ok(val) => Some(val),
140                Err(_) => {
141                    stream.set_position(saved_pos);
142                    None
143                }
144            };
145            stream.expect_complete()?;
146            stream.expect_string(".b32")?;
147            let b32 = ();
148            stream.expect_complete()?;
149            stream.expect_string(".b128")?;
150            let b128 = ();
151            stream.expect_complete()?;
152            let reg = GeneralOperand::parse(stream)?;
153            stream.expect_complete()?;
154            stream.expect(&PtxToken::Comma)?;
155            let try_cancel_response = GeneralOperand::parse(stream)?;
156            stream.expect_complete()?;
157            stream.expect_complete()?;
158            stream.expect(&PtxToken::Semicolon)?;
159            Ok(ClusterlaunchcontrolQueryCancelGetFirstCtaidDimensionB32B128 {
160                query_cancel,
161                get_first_ctaid_dimension,
162                b32,
163                b128,
164                reg,
165                try_cancel_response,
166            })
167        }
168    }
169
170
171}
172