ptx_parser/parser/instruction/
tcgen05_commit.rs1#![allow(unused)]
10
11use crate::lexer::PtxToken;
12use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
13use crate::r#type::common::*;
14
15pub mod section_0 {
16 use super::*;
17 use crate::r#type::instruction::tcgen05_commit::section_0::*;
18
19 impl PtxParser for CompletionMechanism {
24 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
25 {
27 let saved_pos = stream.position();
28 if stream.expect_string(".mbarrier::arrive::one").is_ok() {
29 return Ok(CompletionMechanism::MbarrierArriveOne);
30 }
31 stream.set_position(saved_pos);
32 }
33 let span = stream
34 .peek()
35 .map(|(_, s)| s.clone())
36 .unwrap_or(Span { start: 0, end: 0 });
37 let expected = &[".mbarrier::arrive::one"];
38 let found = stream
39 .peek()
40 .map(|(t, _)| format!("{:?}", t))
41 .unwrap_or_else(|_| "<end of input>".to_string());
42 Err(crate::parser::unexpected_value(span, expected, found))
43 }
44 }
45
46 impl PtxParser for CtaGroup {
47 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
48 {
50 let saved_pos = stream.position();
51 if stream.expect_string(".cta_group::1").is_ok() {
52 return Ok(CtaGroup::CtaGroup1);
53 }
54 stream.set_position(saved_pos);
55 }
56 let saved_pos = stream.position();
57 {
59 let saved_pos = stream.position();
60 if stream.expect_string(".cta_group::2").is_ok() {
61 return Ok(CtaGroup::CtaGroup2);
62 }
63 stream.set_position(saved_pos);
64 }
65 stream.set_position(saved_pos);
66 let span = stream
67 .peek()
68 .map(|(_, s)| s.clone())
69 .unwrap_or(Span { start: 0, end: 0 });
70 let expected = &[".cta_group::1", ".cta_group::2"];
71 let found = stream
72 .peek()
73 .map(|(t, _)| format!("{:?}", t))
74 .unwrap_or_else(|_| "<end of input>".to_string());
75 Err(crate::parser::unexpected_value(span, expected, found))
76 }
77 }
78
79 impl PtxParser for Multicast {
80 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
81 {
83 let saved_pos = stream.position();
84 if stream.expect_string(".multicast::cluster").is_ok() {
85 return Ok(Multicast::MulticastCluster);
86 }
87 stream.set_position(saved_pos);
88 }
89 let span = stream
90 .peek()
91 .map(|(_, s)| s.clone())
92 .unwrap_or(Span { start: 0, end: 0 });
93 let expected = &[".multicast::cluster"];
94 let found = stream
95 .peek()
96 .map(|(t, _)| format!("{:?}", t))
97 .unwrap_or_else(|_| "<end of input>".to_string());
98 Err(crate::parser::unexpected_value(span, expected, found))
99 }
100 }
101
102 impl PtxParser for Tcgen05CommitCtaGroupCompletionMechanismSharedClusterMulticastB64 {
103 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
104 stream.expect_string("tcgen05")?;
105 stream.expect_string(".commit")?;
106 let commit = ();
107 stream.expect_complete()?;
108 let cta_group = CtaGroup::parse(stream)?;
109 stream.expect_complete()?;
110 let completion_mechanism = CompletionMechanism::parse(stream)?;
111 stream.expect_complete()?;
112 let saved_pos = stream.position();
113 let shared_cluster = stream.expect_string(".shared::cluster").is_ok();
114 if !shared_cluster {
115 stream.set_position(saved_pos);
116 }
117 stream.expect_complete()?;
118 let saved_pos = stream.position();
119 let multicast = match Multicast::parse(stream) {
120 Ok(val) => Some(val),
121 Err(_) => {
122 stream.set_position(saved_pos);
123 None
124 }
125 };
126 stream.expect_complete()?;
127 stream.expect_string(".b64")?;
128 let b64 = ();
129 stream.expect_complete()?;
130 let mbar = AddressOperand::parse(stream)?;
131 stream.expect_complete()?;
132 let saved_pos = stream.position();
133 let has_comma = stream.expect(&PtxToken::Comma).is_ok();
134 if !has_comma {
135 stream.set_position(saved_pos);
136 }
137 let saved_pos = stream.position();
138 let ctamask = match GeneralOperand::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_complete()?;
147 stream.expect(&PtxToken::Semicolon)?;
148 Ok(
149 Tcgen05CommitCtaGroupCompletionMechanismSharedClusterMulticastB64 {
150 commit,
151 cta_group,
152 completion_mechanism,
153 shared_cluster,
154 multicast,
155 b64,
156 mbar,
157 ctamask,
158 },
159 )
160 }
161 }
162}