ptx_parser/parser/instruction/
tensormap_cp_fenceproxy.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::tensormap_cp_fenceproxy::section_0::*;
18
19 impl PtxParser for CpQualifiers {
24 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
25 {
27 let saved_pos = stream.position();
28 if stream.expect_string(".global.shared::cta").is_ok() {
29 return Ok(CpQualifiers::GlobalSharedCta);
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 = &[".global.shared::cta"];
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 FenceQualifiers {
47 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
48 {
50 let saved_seq_pos = stream.position();
51 match (|| -> Result<_, PtxParseError> {
52 let to_proxy_from_proxy = ToProxyFromProxy::parse(stream)?;
53 stream.expect_string(".release")?;
54 let release = ();
55 let scope = Scope::parse(stream)?;
56 Ok((to_proxy_from_proxy, release, scope))
57 })() {
58 Ok((to_proxy_from_proxy, release, scope)) => {
59 return Ok(FenceQualifiers::ToProxyFromProxyReleaseScope(
60 to_proxy_from_proxy,
61 release,
62 scope,
63 ));
64 }
65 Err(_) => {
66 stream.set_position(saved_seq_pos);
67 }
68 }
69 }
70 let span = stream
71 .peek()
72 .map(|(_, s)| s.clone())
73 .unwrap_or(Span { start: 0, end: 0 });
74 let expected = &["<complex>"];
75 let found = stream
76 .peek()
77 .map(|(t, _)| format!("{:?}", t))
78 .unwrap_or_else(|_| "<end of input>".to_string());
79 Err(crate::parser::unexpected_value(span, expected, found))
80 }
81 }
82
83 impl PtxParser for Scope {
84 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
85 {
87 let saved_pos = stream.position();
88 if stream.expect_string(".cluster").is_ok() {
89 return Ok(Scope::Cluster);
90 }
91 stream.set_position(saved_pos);
92 }
93 let saved_pos = stream.position();
94 {
96 let saved_pos = stream.position();
97 if stream.expect_string(".cta").is_ok() {
98 return Ok(Scope::Cta);
99 }
100 stream.set_position(saved_pos);
101 }
102 stream.set_position(saved_pos);
103 let saved_pos = stream.position();
104 {
106 let saved_pos = stream.position();
107 if stream.expect_string(".gpu").is_ok() {
108 return Ok(Scope::Gpu);
109 }
110 stream.set_position(saved_pos);
111 }
112 stream.set_position(saved_pos);
113 let saved_pos = stream.position();
114 {
116 let saved_pos = stream.position();
117 if stream.expect_string(".sys").is_ok() {
118 return Ok(Scope::Sys);
119 }
120 stream.set_position(saved_pos);
121 }
122 stream.set_position(saved_pos);
123 let span = stream
124 .peek()
125 .map(|(_, s)| s.clone())
126 .unwrap_or(Span { start: 0, end: 0 });
127 let expected = &[".cluster", ".cta", ".gpu", ".sys"];
128 let found = stream
129 .peek()
130 .map(|(t, _)| format!("{:?}", t))
131 .unwrap_or_else(|_| "<end of input>".to_string());
132 Err(crate::parser::unexpected_value(span, expected, found))
133 }
134 }
135
136 impl PtxParser for ToProxyFromProxy {
137 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
138 {
140 let saved_pos = stream.position();
141 if stream.expect_string(".tensormap::generic").is_ok() {
142 return Ok(ToProxyFromProxy::TensormapGeneric);
143 }
144 stream.set_position(saved_pos);
145 }
146 let span = stream
147 .peek()
148 .map(|(_, s)| s.clone())
149 .unwrap_or(Span { start: 0, end: 0 });
150 let expected = &[".tensormap::generic"];
151 let found = stream
152 .peek()
153 .map(|(t, _)| format!("{:?}", t))
154 .unwrap_or_else(|_| "<end of input>".to_string());
155 Err(crate::parser::unexpected_value(span, expected, found))
156 }
157 }
158
159 impl PtxParser for TensormapCpFenceproxyCpQualifiersFenceQualifiersSyncAligned {
160 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
161 stream.expect_string("tensormap")?;
162 stream.expect_string(".cp_fenceproxy")?;
163 let cp_fenceproxy = ();
164 stream.expect_complete()?;
165 let cp_qualifiers = CpQualifiers::parse(stream)?;
166 stream.expect_complete()?;
167 let fence_qualifiers = FenceQualifiers::parse(stream)?;
168 stream.expect_complete()?;
169 stream.expect_string(".sync")?;
170 let sync = ();
171 stream.expect_complete()?;
172 stream.expect_string(".aligned")?;
173 let aligned = ();
174 stream.expect_complete()?;
175 let dst = AddressOperand::parse(stream)?;
176 stream.expect_complete()?;
177 stream.expect(&PtxToken::Comma)?;
178 let src = AddressOperand::parse(stream)?;
179 stream.expect_complete()?;
180 stream.expect(&PtxToken::Comma)?;
181 let size = GeneralOperand::parse(stream)?;
182 stream.expect_complete()?;
183 stream.expect_complete()?;
184 stream.expect(&PtxToken::Semicolon)?;
185 Ok(
186 TensormapCpFenceproxyCpQualifiersFenceQualifiersSyncAligned {
187 cp_fenceproxy,
188 cp_qualifiers,
189 fence_qualifiers,
190 sync,
191 aligned,
192 dst,
193 src,
194 size,
195 },
196 )
197 }
198 }
199}