ptx_parser/parser/instruction/
sust.rs1#![allow(unused)]
14
15use crate::lexer::PtxToken;
16use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
17use crate::r#type::common::*;
18
19pub mod section_0 {
20 use super::*;
21 use crate::r#type::instruction::sust::section_0::*;
22
23 impl PtxParser for Adim {
28 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
29 {
31 let saved_pos = stream.position();
32 if stream.expect_string(".a1d").is_ok() {
33 return Ok(Adim::A1d);
34 }
35 stream.set_position(saved_pos);
36 }
37 let saved_pos = stream.position();
38 {
40 let saved_pos = stream.position();
41 if stream.expect_string(".a2d").is_ok() {
42 return Ok(Adim::A2d);
43 }
44 stream.set_position(saved_pos);
45 }
46 stream.set_position(saved_pos);
47 let span = stream
48 .peek()
49 .map(|(_, s)| s.clone())
50 .unwrap_or(Span { start: 0, end: 0 });
51 let expected = &[".a1d", ".a2d"];
52 let found = stream
53 .peek()
54 .map(|(t, _)| format!("{:?}", t))
55 .unwrap_or_else(|_| "<end of input>".to_string());
56 Err(crate::parser::unexpected_value(span, expected, found))
57 }
58 }
59
60 impl PtxParser for Cop {
61 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
62 {
64 let saved_pos = stream.position();
65 if stream.expect_string(".wb").is_ok() {
66 return Ok(Cop::Wb);
67 }
68 stream.set_position(saved_pos);
69 }
70 let saved_pos = stream.position();
71 {
73 let saved_pos = stream.position();
74 if stream.expect_string(".cg").is_ok() {
75 return Ok(Cop::Cg);
76 }
77 stream.set_position(saved_pos);
78 }
79 stream.set_position(saved_pos);
80 let saved_pos = stream.position();
81 {
83 let saved_pos = stream.position();
84 if stream.expect_string(".cs").is_ok() {
85 return Ok(Cop::Cs);
86 }
87 stream.set_position(saved_pos);
88 }
89 stream.set_position(saved_pos);
90 let saved_pos = stream.position();
91 {
93 let saved_pos = stream.position();
94 if stream.expect_string(".wt").is_ok() {
95 return Ok(Cop::Wt);
96 }
97 stream.set_position(saved_pos);
98 }
99 stream.set_position(saved_pos);
100 let span = stream
101 .peek()
102 .map(|(_, s)| s.clone())
103 .unwrap_or(Span { start: 0, end: 0 });
104 let expected = &[".wb", ".cg", ".cs", ".wt"];
105 let found = stream
106 .peek()
107 .map(|(t, _)| format!("{:?}", t))
108 .unwrap_or_else(|_| "<end of input>".to_string());
109 Err(crate::parser::unexpected_value(span, expected, found))
110 }
111 }
112
113 impl PtxParser for Ctype {
114 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
115 {
117 let saved_pos = stream.position();
118 if stream.expect_string(".b16").is_ok() {
119 return Ok(Ctype::B16);
120 }
121 stream.set_position(saved_pos);
122 }
123 let saved_pos = stream.position();
124 {
126 let saved_pos = stream.position();
127 if stream.expect_string(".b32").is_ok() {
128 return Ok(Ctype::B32);
129 }
130 stream.set_position(saved_pos);
131 }
132 stream.set_position(saved_pos);
133 let saved_pos = stream.position();
134 {
136 let saved_pos = stream.position();
137 if stream.expect_string(".b64").is_ok() {
138 return Ok(Ctype::B64);
139 }
140 stream.set_position(saved_pos);
141 }
142 stream.set_position(saved_pos);
143 let saved_pos = stream.position();
144 {
146 let saved_pos = stream.position();
147 if stream.expect_string(".b8").is_ok() {
148 return Ok(Ctype::B8);
149 }
150 stream.set_position(saved_pos);
151 }
152 stream.set_position(saved_pos);
153 let span = stream
154 .peek()
155 .map(|(_, s)| s.clone())
156 .unwrap_or(Span { start: 0, end: 0 });
157 let expected = &[".b16", ".b32", ".b64", ".b8"];
158 let found = stream
159 .peek()
160 .map(|(t, _)| format!("{:?}", t))
161 .unwrap_or_else(|_| "<end of input>".to_string());
162 Err(crate::parser::unexpected_value(span, expected, found))
163 }
164 }
165
166 impl PtxParser for Dim {
167 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
168 {
170 let saved_pos = stream.position();
171 if stream.expect_string(".1d").is_ok() {
172 return Ok(Dim::_1d);
173 }
174 stream.set_position(saved_pos);
175 }
176 let saved_pos = stream.position();
177 {
179 let saved_pos = stream.position();
180 if stream.expect_string(".2d").is_ok() {
181 return Ok(Dim::_2d);
182 }
183 stream.set_position(saved_pos);
184 }
185 stream.set_position(saved_pos);
186 let saved_pos = stream.position();
187 {
189 let saved_pos = stream.position();
190 if stream.expect_string(".3d").is_ok() {
191 return Ok(Dim::_3d);
192 }
193 stream.set_position(saved_pos);
194 }
195 stream.set_position(saved_pos);
196 let span = stream
197 .peek()
198 .map(|(_, s)| s.clone())
199 .unwrap_or(Span { start: 0, end: 0 });
200 let expected = &[".1d", ".2d", ".3d"];
201 let found = stream
202 .peek()
203 .map(|(t, _)| format!("{:?}", t))
204 .unwrap_or_else(|_| "<end of input>".to_string());
205 Err(crate::parser::unexpected_value(span, expected, found))
206 }
207 }
208
209 impl PtxParser for Mode {
210 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
211 {
213 let saved_pos = stream.position();
214 if stream.expect_string(".clamp").is_ok() {
215 return Ok(Mode::Clamp);
216 }
217 stream.set_position(saved_pos);
218 }
219 let saved_pos = stream.position();
220 {
222 let saved_pos = stream.position();
223 if stream.expect_string(".trap").is_ok() {
224 return Ok(Mode::Trap);
225 }
226 stream.set_position(saved_pos);
227 }
228 stream.set_position(saved_pos);
229 let saved_pos = stream.position();
230 {
232 let saved_pos = stream.position();
233 if stream.expect_string(".zero").is_ok() {
234 return Ok(Mode::Zero);
235 }
236 stream.set_position(saved_pos);
237 }
238 stream.set_position(saved_pos);
239 let span = stream
240 .peek()
241 .map(|(_, s)| s.clone())
242 .unwrap_or(Span { start: 0, end: 0 });
243 let expected = &[".clamp", ".trap", ".zero"];
244 let found = stream
245 .peek()
246 .map(|(t, _)| format!("{:?}", t))
247 .unwrap_or_else(|_| "<end of input>".to_string());
248 Err(crate::parser::unexpected_value(span, expected, found))
249 }
250 }
251
252 impl PtxParser for Vec {
253 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
254 {
256 let saved_pos = stream.position();
257 if stream.expect_string("none").is_ok() {
258 return Ok(Vec::None);
259 }
260 stream.set_position(saved_pos);
261 }
262 let saved_pos = stream.position();
263 {
265 let saved_pos = stream.position();
266 if stream.expect_string(".v2").is_ok() {
267 return Ok(Vec::V2);
268 }
269 stream.set_position(saved_pos);
270 }
271 stream.set_position(saved_pos);
272 let saved_pos = stream.position();
273 {
275 let saved_pos = stream.position();
276 if stream.expect_string(".v4").is_ok() {
277 return Ok(Vec::V4);
278 }
279 stream.set_position(saved_pos);
280 }
281 stream.set_position(saved_pos);
282 let span = stream
283 .peek()
284 .map(|(_, s)| s.clone())
285 .unwrap_or(Span { start: 0, end: 0 });
286 let expected = &["none", ".v2", ".v4"];
287 let found = stream
288 .peek()
289 .map(|(t, _)| format!("{:?}", t))
290 .unwrap_or_else(|_| "<end of input>".to_string());
291 Err(crate::parser::unexpected_value(span, expected, found))
292 }
293 }
294
295 impl PtxParser for SustBDimCopVecCtypeMode {
296 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
297 stream.expect_string("sust")?;
298 stream.expect_string(".b")?;
299 let b = ();
300 stream.expect_complete()?;
301 let dim = Dim::parse(stream)?;
302 stream.expect_complete()?;
303 let saved_pos = stream.position();
304 let cop = match Cop::parse(stream) {
305 Ok(val) => Some(val),
306 Err(_) => {
307 stream.set_position(saved_pos);
308 None
309 }
310 };
311 stream.expect_complete()?;
312 let vec = Vec::parse(stream)?;
313 stream.expect_complete()?;
314 let ctype = Ctype::parse(stream)?;
315 stream.expect_complete()?;
316 let saved_pos = stream.position();
317 let mode = match Mode::parse(stream) {
318 Ok(val) => Some(val),
319 Err(_) => {
320 stream.set_position(saved_pos);
321 None
322 }
323 };
324 stream.expect_complete()?;
325 let a = TexHandler2::parse(stream)?;
326 stream.expect_complete()?;
327 stream.expect(&PtxToken::Comma)?;
328 let c = GeneralOperand::parse(stream)?;
329 stream.expect_complete()?;
330 stream.expect_complete()?;
331 stream.expect(&PtxToken::Semicolon)?;
332 Ok(SustBDimCopVecCtypeMode {
333 b,
334 dim,
335 cop,
336 vec,
337 ctype,
338 mode,
339 a,
340 c,
341 })
342 }
343 }
344
345 impl PtxParser for SustPDimVecB32Mode {
346 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
347 stream.expect_string("sust")?;
348 stream.expect_string(".p")?;
349 let p = ();
350 stream.expect_complete()?;
351 let dim = Dim::parse(stream)?;
352 stream.expect_complete()?;
353 let vec = Vec::parse(stream)?;
354 stream.expect_complete()?;
355 stream.expect_string(".b32")?;
356 let b32 = ();
357 stream.expect_complete()?;
358 let saved_pos = stream.position();
359 let mode = match Mode::parse(stream) {
360 Ok(val) => Some(val),
361 Err(_) => {
362 stream.set_position(saved_pos);
363 None
364 }
365 };
366 stream.expect_complete()?;
367 let a = TexHandler2::parse(stream)?;
368 stream.expect_complete()?;
369 stream.expect(&PtxToken::Comma)?;
370 let c = GeneralOperand::parse(stream)?;
371 stream.expect_complete()?;
372 stream.expect_complete()?;
373 stream.expect(&PtxToken::Semicolon)?;
374 Ok(SustPDimVecB32Mode {
375 p,
376 dim,
377 vec,
378 b32,
379 mode,
380 a,
381 c,
382 })
383 }
384 }
385
386 impl PtxParser for SustBAdimCopVecCtypeMode {
387 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
388 stream.expect_string("sust")?;
389 stream.expect_string(".b")?;
390 let b = ();
391 stream.expect_complete()?;
392 let adim = Adim::parse(stream)?;
393 stream.expect_complete()?;
394 let saved_pos = stream.position();
395 let cop = match Cop::parse(stream) {
396 Ok(val) => Some(val),
397 Err(_) => {
398 stream.set_position(saved_pos);
399 None
400 }
401 };
402 stream.expect_complete()?;
403 let vec = Vec::parse(stream)?;
404 stream.expect_complete()?;
405 let ctype = Ctype::parse(stream)?;
406 stream.expect_complete()?;
407 let saved_pos = stream.position();
408 let mode = match Mode::parse(stream) {
409 Ok(val) => Some(val),
410 Err(_) => {
411 stream.set_position(saved_pos);
412 None
413 }
414 };
415 stream.expect_complete()?;
416 let a = TexHandler2::parse(stream)?;
417 stream.expect_complete()?;
418 stream.expect(&PtxToken::Comma)?;
419 let c = GeneralOperand::parse(stream)?;
420 stream.expect_complete()?;
421 stream.expect_complete()?;
422 stream.expect(&PtxToken::Semicolon)?;
423 Ok(SustBAdimCopVecCtypeMode {
424 b,
425 adim,
426 cop,
427 vec,
428 ctype,
429 mode,
430 a,
431 c,
432 })
433 }
434 }
435}