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.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
80 let expected = &[".u32", ".u64", ".s32", ".b32", ".s64"];
81 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
82 Err(crate::parser::unexpected_value(span, expected, found))
83 }
84 }
85
86 impl PtxParser for Geom {
87 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
88 {
90 let saved_pos = stream.position();
91 if stream.expect_string(".1d").is_ok() {
92 return Ok(Geom::_1d);
93 }
94 stream.set_position(saved_pos);
95 }
96 let saved_pos = stream.position();
97 {
99 let saved_pos = stream.position();
100 if stream.expect_string(".2d").is_ok() {
101 return Ok(Geom::_2d);
102 }
103 stream.set_position(saved_pos);
104 }
105 stream.set_position(saved_pos);
106 let saved_pos = stream.position();
107 {
109 let saved_pos = stream.position();
110 if stream.expect_string(".3d").is_ok() {
111 return Ok(Geom::_3d);
112 }
113 stream.set_position(saved_pos);
114 }
115 stream.set_position(saved_pos);
116 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
117 let expected = &[".1d", ".2d", ".3d"];
118 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
119 Err(crate::parser::unexpected_value(span, expected, found))
120 }
121 }
122
123 impl PtxParser for Mode {
124 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
125 {
127 let saved_pos = stream.position();
128 if stream.expect_string(".clamp").is_ok() {
129 return Ok(Mode::Clamp);
130 }
131 stream.set_position(saved_pos);
132 }
133 let saved_pos = stream.position();
134 {
136 let saved_pos = stream.position();
137 if stream.expect_string(".trap").is_ok() {
138 return Ok(Mode::Trap);
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(".zero").is_ok() {
148 return Ok(Mode::Zero);
149 }
150 stream.set_position(saved_pos);
151 }
152 stream.set_position(saved_pos);
153 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
154 let expected = &[".clamp", ".trap", ".zero"];
155 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
156 Err(crate::parser::unexpected_value(span, expected, found))
157 }
158 }
159
160 impl PtxParser for Op {
161 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
162 {
164 let saved_pos = stream.position();
165 if stream.expect_string(".add").is_ok() {
166 return Ok(Op::Add);
167 }
168 stream.set_position(saved_pos);
169 }
170 let saved_pos = stream.position();
171 {
173 let saved_pos = stream.position();
174 if stream.expect_string(".min").is_ok() {
175 return Ok(Op::Min);
176 }
177 stream.set_position(saved_pos);
178 }
179 stream.set_position(saved_pos);
180 let saved_pos = stream.position();
181 {
183 let saved_pos = stream.position();
184 if stream.expect_string(".max").is_ok() {
185 return Ok(Op::Max);
186 }
187 stream.set_position(saved_pos);
188 }
189 stream.set_position(saved_pos);
190 let saved_pos = stream.position();
191 {
193 let saved_pos = stream.position();
194 if stream.expect_string(".and").is_ok() {
195 return Ok(Op::And);
196 }
197 stream.set_position(saved_pos);
198 }
199 stream.set_position(saved_pos);
200 let saved_pos = stream.position();
201 {
203 let saved_pos = stream.position();
204 if stream.expect_string(".or").is_ok() {
205 return Ok(Op::Or);
206 }
207 stream.set_position(saved_pos);
208 }
209 stream.set_position(saved_pos);
210 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
211 let expected = &[".add", ".min", ".max", ".and", ".or"];
212 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
213 Err(crate::parser::unexpected_value(span, expected, found))
214 }
215 }
216
217 impl PtxParser for SuredBOpGeomCtypeMode {
218 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
219 stream.expect_string("sured")?;
220 stream.expect_string(".b")?;
221 let b = ();
222 stream.expect_complete()?;
223 let op = Op::parse(stream)?;
224 stream.expect_complete()?;
225 let geom = Geom::parse(stream)?;
226 stream.expect_complete()?;
227 let ctype = Ctype::parse(stream)?;
228 stream.expect_complete()?;
229 let mode = Mode::parse(stream)?;
230 stream.expect_complete()?;
231 let a = TexHandler2::parse(stream)?;
232 stream.expect_complete()?;
233 stream.expect(&PtxToken::Comma)?;
234 let c = GeneralOperand::parse(stream)?;
235 stream.expect_complete()?;
236 stream.expect_complete()?;
237 stream.expect(&PtxToken::Semicolon)?;
238 Ok(SuredBOpGeomCtypeMode {
239 b,
240 op,
241 geom,
242 ctype,
243 mode,
244 a,
245 c,
246 })
247 }
248 }
249
250
251}
252
253pub mod section_1 {
254 use super::*;
255 use crate::r#type::instruction::sured::section_1::*;
256
257 impl PtxParser for Ctype {
262 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
263 {
265 let saved_pos = stream.position();
266 if stream.expect_string(".b32").is_ok() {
267 return Ok(Ctype::B32);
268 }
269 stream.set_position(saved_pos);
270 }
271 let saved_pos = stream.position();
272 {
274 let saved_pos = stream.position();
275 if stream.expect_string(".b64").is_ok() {
276 return Ok(Ctype::B64);
277 }
278 stream.set_position(saved_pos);
279 }
280 stream.set_position(saved_pos);
281 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
282 let expected = &[".b32", ".b64"];
283 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
284 Err(crate::parser::unexpected_value(span, expected, found))
285 }
286 }
287
288 impl PtxParser for Geom {
289 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
290 {
292 let saved_pos = stream.position();
293 if stream.expect_string(".1d").is_ok() {
294 return Ok(Geom::_1d);
295 }
296 stream.set_position(saved_pos);
297 }
298 let saved_pos = stream.position();
299 {
301 let saved_pos = stream.position();
302 if stream.expect_string(".2d").is_ok() {
303 return Ok(Geom::_2d);
304 }
305 stream.set_position(saved_pos);
306 }
307 stream.set_position(saved_pos);
308 let saved_pos = stream.position();
309 {
311 let saved_pos = stream.position();
312 if stream.expect_string(".3d").is_ok() {
313 return Ok(Geom::_3d);
314 }
315 stream.set_position(saved_pos);
316 }
317 stream.set_position(saved_pos);
318 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
319 let expected = &[".1d", ".2d", ".3d"];
320 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
321 Err(crate::parser::unexpected_value(span, expected, found))
322 }
323 }
324
325 impl PtxParser for Mode {
326 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
327 {
329 let saved_pos = stream.position();
330 if stream.expect_string(".clamp").is_ok() {
331 return Ok(Mode::Clamp);
332 }
333 stream.set_position(saved_pos);
334 }
335 let saved_pos = stream.position();
336 {
338 let saved_pos = stream.position();
339 if stream.expect_string(".trap").is_ok() {
340 return Ok(Mode::Trap);
341 }
342 stream.set_position(saved_pos);
343 }
344 stream.set_position(saved_pos);
345 let saved_pos = stream.position();
346 {
348 let saved_pos = stream.position();
349 if stream.expect_string(".zero").is_ok() {
350 return Ok(Mode::Zero);
351 }
352 stream.set_position(saved_pos);
353 }
354 stream.set_position(saved_pos);
355 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
356 let expected = &[".clamp", ".trap", ".zero"];
357 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
358 Err(crate::parser::unexpected_value(span, expected, found))
359 }
360 }
361
362 impl PtxParser for Op {
363 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
364 {
366 let saved_pos = stream.position();
367 if stream.expect_string(".add").is_ok() {
368 return Ok(Op::Add);
369 }
370 stream.set_position(saved_pos);
371 }
372 let saved_pos = stream.position();
373 {
375 let saved_pos = stream.position();
376 if stream.expect_string(".min").is_ok() {
377 return Ok(Op::Min);
378 }
379 stream.set_position(saved_pos);
380 }
381 stream.set_position(saved_pos);
382 let saved_pos = stream.position();
383 {
385 let saved_pos = stream.position();
386 if stream.expect_string(".max").is_ok() {
387 return Ok(Op::Max);
388 }
389 stream.set_position(saved_pos);
390 }
391 stream.set_position(saved_pos);
392 let saved_pos = stream.position();
393 {
395 let saved_pos = stream.position();
396 if stream.expect_string(".and").is_ok() {
397 return Ok(Op::And);
398 }
399 stream.set_position(saved_pos);
400 }
401 stream.set_position(saved_pos);
402 let saved_pos = stream.position();
403 {
405 let saved_pos = stream.position();
406 if stream.expect_string(".or").is_ok() {
407 return Ok(Op::Or);
408 }
409 stream.set_position(saved_pos);
410 }
411 stream.set_position(saved_pos);
412 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
413 let expected = &[".add", ".min", ".max", ".and", ".or"];
414 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
415 Err(crate::parser::unexpected_value(span, expected, found))
416 }
417 }
418
419 impl PtxParser for SuredPOpGeomCtypeMode {
420 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
421 stream.expect_string("sured")?;
422 stream.expect_string(".p")?;
423 let p = ();
424 stream.expect_complete()?;
425 let op = Op::parse(stream)?;
426 stream.expect_complete()?;
427 let geom = Geom::parse(stream)?;
428 stream.expect_complete()?;
429 let ctype = Ctype::parse(stream)?;
430 stream.expect_complete()?;
431 let mode = Mode::parse(stream)?;
432 stream.expect_complete()?;
433 let a = TexHandler2::parse(stream)?;
434 stream.expect_complete()?;
435 stream.expect(&PtxToken::Comma)?;
436 let c = GeneralOperand::parse(stream)?;
437 stream.expect_complete()?;
438 stream.expect_complete()?;
439 stream.expect(&PtxToken::Semicolon)?;
440 Ok(SuredPOpGeomCtypeMode {
441 p,
442 op,
443 geom,
444 ctype,
445 mode,
446 a,
447 c,
448 })
449 }
450 }
451
452
453}
454