ptx_parser/parser/instruction/
sured.rs1#![allow(unused)]
16
17use crate::lexer::PtxToken;
18use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
19use crate::r#type::common::*;
20
21pub mod section_0 {
22 use super::*;
23 use crate::r#type::instruction::sured::section_0::*;
24
25 impl PtxParser for Ctype {
30 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
31 {
33 let saved_pos = stream.position();
34 if stream.expect_string(".u32").is_ok() {
35 return Ok(Ctype::U32);
36 }
37 stream.set_position(saved_pos);
38 }
39 let saved_pos = stream.position();
40 {
42 let saved_pos = stream.position();
43 if stream.expect_string(".u64").is_ok() {
44 return Ok(Ctype::U64);
45 }
46 stream.set_position(saved_pos);
47 }
48 stream.set_position(saved_pos);
49 let saved_pos = stream.position();
50 {
52 let saved_pos = stream.position();
53 if stream.expect_string(".s32").is_ok() {
54 return Ok(Ctype::S32);
55 }
56 stream.set_position(saved_pos);
57 }
58 stream.set_position(saved_pos);
59 let saved_pos = stream.position();
60 {
62 let saved_pos = stream.position();
63 if stream.expect_string(".b32").is_ok() {
64 return Ok(Ctype::B32);
65 }
66 stream.set_position(saved_pos);
67 }
68 stream.set_position(saved_pos);
69 let saved_pos = stream.position();
70 {
72 let saved_pos = stream.position();
73 if stream.expect_string(".s64").is_ok() {
74 return Ok(Ctype::S64);
75 }
76 stream.set_position(saved_pos);
77 }
78 stream.set_position(saved_pos);
79 let span = stream
80 .peek()
81 .map(|(_, s)| s.clone())
82 .unwrap_or(Span { start: 0, end: 0 });
83 let expected = &[".u32", ".u64", ".s32", ".b32", ".s64"];
84 let found = stream
85 .peek()
86 .map(|(t, _)| format!("{:?}", t))
87 .unwrap_or_else(|_| "<end of input>".to_string());
88 Err(crate::parser::unexpected_value(span, expected, found))
89 }
90 }
91
92 impl PtxParser for Geom {
93 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
94 {
96 let saved_pos = stream.position();
97 if stream.expect_string(".1d").is_ok() {
98 return Ok(Geom::_1d);
99 }
100 stream.set_position(saved_pos);
101 }
102 let saved_pos = stream.position();
103 {
105 let saved_pos = stream.position();
106 if stream.expect_string(".2d").is_ok() {
107 return Ok(Geom::_2d);
108 }
109 stream.set_position(saved_pos);
110 }
111 stream.set_position(saved_pos);
112 let saved_pos = stream.position();
113 {
115 let saved_pos = stream.position();
116 if stream.expect_string(".3d").is_ok() {
117 return Ok(Geom::_3d);
118 }
119 stream.set_position(saved_pos);
120 }
121 stream.set_position(saved_pos);
122 let span = stream
123 .peek()
124 .map(|(_, s)| s.clone())
125 .unwrap_or(Span { start: 0, end: 0 });
126 let expected = &[".1d", ".2d", ".3d"];
127 let found = stream
128 .peek()
129 .map(|(t, _)| format!("{:?}", t))
130 .unwrap_or_else(|_| "<end of input>".to_string());
131 Err(crate::parser::unexpected_value(span, expected, found))
132 }
133 }
134
135 impl PtxParser for Mode {
136 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
137 {
139 let saved_pos = stream.position();
140 if stream.expect_string(".clamp").is_ok() {
141 return Ok(Mode::Clamp);
142 }
143 stream.set_position(saved_pos);
144 }
145 let saved_pos = stream.position();
146 {
148 let saved_pos = stream.position();
149 if stream.expect_string(".trap").is_ok() {
150 return Ok(Mode::Trap);
151 }
152 stream.set_position(saved_pos);
153 }
154 stream.set_position(saved_pos);
155 let saved_pos = stream.position();
156 {
158 let saved_pos = stream.position();
159 if stream.expect_string(".zero").is_ok() {
160 return Ok(Mode::Zero);
161 }
162 stream.set_position(saved_pos);
163 }
164 stream.set_position(saved_pos);
165 let span = stream
166 .peek()
167 .map(|(_, s)| s.clone())
168 .unwrap_or(Span { start: 0, end: 0 });
169 let expected = &[".clamp", ".trap", ".zero"];
170 let found = stream
171 .peek()
172 .map(|(t, _)| format!("{:?}", t))
173 .unwrap_or_else(|_| "<end of input>".to_string());
174 Err(crate::parser::unexpected_value(span, expected, found))
175 }
176 }
177
178 impl PtxParser for Op {
179 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
180 {
182 let saved_pos = stream.position();
183 if stream.expect_string(".add").is_ok() {
184 return Ok(Op::Add);
185 }
186 stream.set_position(saved_pos);
187 }
188 let saved_pos = stream.position();
189 {
191 let saved_pos = stream.position();
192 if stream.expect_string(".min").is_ok() {
193 return Ok(Op::Min);
194 }
195 stream.set_position(saved_pos);
196 }
197 stream.set_position(saved_pos);
198 let saved_pos = stream.position();
199 {
201 let saved_pos = stream.position();
202 if stream.expect_string(".max").is_ok() {
203 return Ok(Op::Max);
204 }
205 stream.set_position(saved_pos);
206 }
207 stream.set_position(saved_pos);
208 let saved_pos = stream.position();
209 {
211 let saved_pos = stream.position();
212 if stream.expect_string(".and").is_ok() {
213 return Ok(Op::And);
214 }
215 stream.set_position(saved_pos);
216 }
217 stream.set_position(saved_pos);
218 let saved_pos = stream.position();
219 {
221 let saved_pos = stream.position();
222 if stream.expect_string(".or").is_ok() {
223 return Ok(Op::Or);
224 }
225 stream.set_position(saved_pos);
226 }
227 stream.set_position(saved_pos);
228 let span = stream
229 .peek()
230 .map(|(_, s)| s.clone())
231 .unwrap_or(Span { start: 0, end: 0 });
232 let expected = &[".add", ".min", ".max", ".and", ".or"];
233 let found = stream
234 .peek()
235 .map(|(t, _)| format!("{:?}", t))
236 .unwrap_or_else(|_| "<end of input>".to_string());
237 Err(crate::parser::unexpected_value(span, expected, found))
238 }
239 }
240
241 impl PtxParser for SuredBOpGeomCtypeMode {
242 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
243 stream.expect_string("sured")?;
244 stream.expect_string(".b")?;
245 let b = ();
246 stream.expect_complete()?;
247 let op = Op::parse(stream)?;
248 stream.expect_complete()?;
249 let geom = Geom::parse(stream)?;
250 stream.expect_complete()?;
251 let ctype = Ctype::parse(stream)?;
252 stream.expect_complete()?;
253 let mode = Mode::parse(stream)?;
254 stream.expect_complete()?;
255 let a = TexHandler2::parse(stream)?;
256 stream.expect_complete()?;
257 stream.expect(&PtxToken::Comma)?;
258 let c = GeneralOperand::parse(stream)?;
259 stream.expect_complete()?;
260 stream.expect_complete()?;
261 stream.expect(&PtxToken::Semicolon)?;
262 Ok(SuredBOpGeomCtypeMode {
263 b,
264 op,
265 geom,
266 ctype,
267 mode,
268 a,
269 c,
270 })
271 }
272 }
273}
274
275pub mod section_1 {
276 use super::*;
277 use crate::r#type::instruction::sured::section_1::*;
278
279 impl PtxParser for Ctype {
284 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
285 {
287 let saved_pos = stream.position();
288 if stream.expect_string(".b32").is_ok() {
289 return Ok(Ctype::B32);
290 }
291 stream.set_position(saved_pos);
292 }
293 let saved_pos = stream.position();
294 {
296 let saved_pos = stream.position();
297 if stream.expect_string(".b64").is_ok() {
298 return Ok(Ctype::B64);
299 }
300 stream.set_position(saved_pos);
301 }
302 stream.set_position(saved_pos);
303 let span = stream
304 .peek()
305 .map(|(_, s)| s.clone())
306 .unwrap_or(Span { start: 0, end: 0 });
307 let expected = &[".b32", ".b64"];
308 let found = stream
309 .peek()
310 .map(|(t, _)| format!("{:?}", t))
311 .unwrap_or_else(|_| "<end of input>".to_string());
312 Err(crate::parser::unexpected_value(span, expected, found))
313 }
314 }
315
316 impl PtxParser for Geom {
317 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
318 {
320 let saved_pos = stream.position();
321 if stream.expect_string(".1d").is_ok() {
322 return Ok(Geom::_1d);
323 }
324 stream.set_position(saved_pos);
325 }
326 let saved_pos = stream.position();
327 {
329 let saved_pos = stream.position();
330 if stream.expect_string(".2d").is_ok() {
331 return Ok(Geom::_2d);
332 }
333 stream.set_position(saved_pos);
334 }
335 stream.set_position(saved_pos);
336 let saved_pos = stream.position();
337 {
339 let saved_pos = stream.position();
340 if stream.expect_string(".3d").is_ok() {
341 return Ok(Geom::_3d);
342 }
343 stream.set_position(saved_pos);
344 }
345 stream.set_position(saved_pos);
346 let span = stream
347 .peek()
348 .map(|(_, s)| s.clone())
349 .unwrap_or(Span { start: 0, end: 0 });
350 let expected = &[".1d", ".2d", ".3d"];
351 let found = stream
352 .peek()
353 .map(|(t, _)| format!("{:?}", t))
354 .unwrap_or_else(|_| "<end of input>".to_string());
355 Err(crate::parser::unexpected_value(span, expected, found))
356 }
357 }
358
359 impl PtxParser for Mode {
360 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
361 {
363 let saved_pos = stream.position();
364 if stream.expect_string(".clamp").is_ok() {
365 return Ok(Mode::Clamp);
366 }
367 stream.set_position(saved_pos);
368 }
369 let saved_pos = stream.position();
370 {
372 let saved_pos = stream.position();
373 if stream.expect_string(".trap").is_ok() {
374 return Ok(Mode::Trap);
375 }
376 stream.set_position(saved_pos);
377 }
378 stream.set_position(saved_pos);
379 let saved_pos = stream.position();
380 {
382 let saved_pos = stream.position();
383 if stream.expect_string(".zero").is_ok() {
384 return Ok(Mode::Zero);
385 }
386 stream.set_position(saved_pos);
387 }
388 stream.set_position(saved_pos);
389 let span = stream
390 .peek()
391 .map(|(_, s)| s.clone())
392 .unwrap_or(Span { start: 0, end: 0 });
393 let expected = &[".clamp", ".trap", ".zero"];
394 let found = stream
395 .peek()
396 .map(|(t, _)| format!("{:?}", t))
397 .unwrap_or_else(|_| "<end of input>".to_string());
398 Err(crate::parser::unexpected_value(span, expected, found))
399 }
400 }
401
402 impl PtxParser for Op {
403 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
404 {
406 let saved_pos = stream.position();
407 if stream.expect_string(".add").is_ok() {
408 return Ok(Op::Add);
409 }
410 stream.set_position(saved_pos);
411 }
412 let saved_pos = stream.position();
413 {
415 let saved_pos = stream.position();
416 if stream.expect_string(".min").is_ok() {
417 return Ok(Op::Min);
418 }
419 stream.set_position(saved_pos);
420 }
421 stream.set_position(saved_pos);
422 let saved_pos = stream.position();
423 {
425 let saved_pos = stream.position();
426 if stream.expect_string(".max").is_ok() {
427 return Ok(Op::Max);
428 }
429 stream.set_position(saved_pos);
430 }
431 stream.set_position(saved_pos);
432 let saved_pos = stream.position();
433 {
435 let saved_pos = stream.position();
436 if stream.expect_string(".and").is_ok() {
437 return Ok(Op::And);
438 }
439 stream.set_position(saved_pos);
440 }
441 stream.set_position(saved_pos);
442 let saved_pos = stream.position();
443 {
445 let saved_pos = stream.position();
446 if stream.expect_string(".or").is_ok() {
447 return Ok(Op::Or);
448 }
449 stream.set_position(saved_pos);
450 }
451 stream.set_position(saved_pos);
452 let span = stream
453 .peek()
454 .map(|(_, s)| s.clone())
455 .unwrap_or(Span { start: 0, end: 0 });
456 let expected = &[".add", ".min", ".max", ".and", ".or"];
457 let found = stream
458 .peek()
459 .map(|(t, _)| format!("{:?}", t))
460 .unwrap_or_else(|_| "<end of input>".to_string());
461 Err(crate::parser::unexpected_value(span, expected, found))
462 }
463 }
464
465 impl PtxParser for SuredPOpGeomCtypeMode {
466 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
467 stream.expect_string("sured")?;
468 stream.expect_string(".p")?;
469 let p = ();
470 stream.expect_complete()?;
471 let op = Op::parse(stream)?;
472 stream.expect_complete()?;
473 let geom = Geom::parse(stream)?;
474 stream.expect_complete()?;
475 let ctype = Ctype::parse(stream)?;
476 stream.expect_complete()?;
477 let mode = Mode::parse(stream)?;
478 stream.expect_complete()?;
479 let a = TexHandler2::parse(stream)?;
480 stream.expect_complete()?;
481 stream.expect(&PtxToken::Comma)?;
482 let c = GeneralOperand::parse(stream)?;
483 stream.expect_complete()?;
484 stream.expect_complete()?;
485 stream.expect(&PtxToken::Semicolon)?;
486 Ok(SuredPOpGeomCtypeMode {
487 p,
488 op,
489 geom,
490 ctype,
491 mode,
492 a,
493 c,
494 })
495 }
496 }
497}