ptx_parser/parser/instruction/
clusterlaunchcontrol_try_cancel.rs1#![allow(unused)]
8
9use crate::lexer::PtxToken;
10use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
11use crate::r#type::common::*;
12
13pub mod section_0 {
14 use super::*;
15 use crate::r#type::instruction::clusterlaunchcontrol_try_cancel::section_0::*;
16
17 impl PtxParser for CompletionMechanism {
22 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
23 {
25 let saved_pos = stream.position();
26 if stream.expect_string(".mbarrier::complete_tx::bytes").is_ok() {
27 return Ok(CompletionMechanism::MbarrierCompleteTxBytes);
28 }
29 stream.set_position(saved_pos);
30 }
31 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
32 let expected = &[".mbarrier::complete_tx::bytes"];
33 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
34 Err(crate::parser::unexpected_value(span, expected, found))
35 }
36 }
37
38 impl PtxParser for Space {
39 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
40 {
42 let saved_pos = stream.position();
43 if stream.expect_string(".shared::cta").is_ok() {
44 return Ok(Space::SharedCta);
45 }
46 stream.set_position(saved_pos);
47 }
48 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
49 let expected = &[".shared::cta"];
50 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
51 Err(crate::parser::unexpected_value(span, expected, found))
52 }
53 }
54
55 impl PtxParser for ClusterlaunchcontrolTryCancelAsyncSpaceCompletionMechanismMulticastClusterAllB128 {
56 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
57 stream.expect_string("clusterlaunchcontrol")?;
58 stream.expect_string(".try_cancel")?;
59 let try_cancel = ();
60 stream.expect_complete()?;
61 stream.expect_string(".async")?;
62 let async_ = ();
63 stream.expect_complete()?;
64 let saved_pos = stream.position();
65 let space = match Space::parse(stream) {
66 Ok(val) => Some(val),
67 Err(_) => {
68 stream.set_position(saved_pos);
69 None
70 }
71 };
72 stream.expect_complete()?;
73 let completion_mechanism = CompletionMechanism::parse(stream)?;
74 stream.expect_complete()?;
75 let saved_pos = stream.position();
76 let multicast_cluster_all = stream.expect_string(".multicast::cluster::all").is_ok();
77 if !multicast_cluster_all {
78 stream.set_position(saved_pos);
79 }
80 stream.expect_complete()?;
81 stream.expect_string(".b128")?;
82 let b128 = ();
83 stream.expect_complete()?;
84 let addr = AddressOperand::parse(stream)?;
85 stream.expect_complete()?;
86 stream.expect(&PtxToken::Comma)?;
87 let mbar = AddressOperand::parse(stream)?;
88 stream.expect_complete()?;
89 stream.expect_complete()?;
90 stream.expect(&PtxToken::Semicolon)?;
91 Ok(ClusterlaunchcontrolTryCancelAsyncSpaceCompletionMechanismMulticastClusterAllB128 {
92 try_cancel,
93 async_,
94 space,
95 completion_mechanism,
96 multicast_cluster_all,
97 b128,
98 addr,
99 mbar,
100 })
101 }
102 }
103
104
105}
106