1#![allow(unused)]
32
33use crate::lexer::PtxToken;
34use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
35use crate::r#type::common::*;
36
37pub mod section_0 {
38 use super::*;
39 use crate::r#type::instruction::cp_async_bulk::section_0::*;
40
41 impl PtxParser for CompletionMechanism {
46 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
47 {
49 let saved_pos = stream.position();
50 if stream.expect_string(".mbarrier::complete_tx::bytes").is_ok() {
51 return Ok(CompletionMechanism::MbarrierCompleteTxBytes);
52 }
53 stream.set_position(saved_pos);
54 }
55 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
56 let expected = &[".mbarrier::complete_tx::bytes"];
57 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
58 Err(crate::parser::unexpected_value(span, expected, found))
59 }
60 }
61
62 impl PtxParser for Dst {
63 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
64 {
66 let saved_pos = stream.position();
67 if stream.expect_string(".shared::cta").is_ok() {
68 return Ok(Dst::SharedCta);
69 }
70 stream.set_position(saved_pos);
71 }
72 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
73 let expected = &[".shared::cta"];
74 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
75 Err(crate::parser::unexpected_value(span, expected, found))
76 }
77 }
78
79 impl PtxParser for LevelCacheHint {
80 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
81 {
83 let saved_pos = stream.position();
84 if stream.expect_string(".L2::cache_hint").is_ok() {
85 return Ok(LevelCacheHint::L2CacheHint);
86 }
87 stream.set_position(saved_pos);
88 }
89 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
90 let expected = &[".L2::cache_hint"];
91 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
92 Err(crate::parser::unexpected_value(span, expected, found))
93 }
94 }
95
96 impl PtxParser for Src {
97 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
98 {
100 let saved_pos = stream.position();
101 if stream.expect_string(".global").is_ok() {
102 return Ok(Src::Global);
103 }
104 stream.set_position(saved_pos);
105 }
106 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
107 let expected = &[".global"];
108 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
109 Err(crate::parser::unexpected_value(span, expected, found))
110 }
111 }
112
113 impl PtxParser for CpAsyncBulkDstSrcCompletionMechanismLevelCacheHint {
114 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
115 stream.expect_string("cp")?;
116 stream.expect_string(".async")?;
117 let async_ = ();
118 stream.expect_complete()?;
119 stream.expect_string(".bulk")?;
120 let bulk = ();
121 stream.expect_complete()?;
122 let dst = Dst::parse(stream)?;
123 stream.expect_complete()?;
124 let src = Src::parse(stream)?;
125 stream.expect_complete()?;
126 let completion_mechanism = CompletionMechanism::parse(stream)?;
127 stream.expect_complete()?;
128 let saved_pos = stream.position();
129 let level_cache_hint = match LevelCacheHint::parse(stream) {
130 Ok(val) => Some(val),
131 Err(_) => {
132 stream.set_position(saved_pos);
133 None
134 }
135 };
136 stream.expect_complete()?;
137 let dstmem = AddressOperand::parse(stream)?;
138 stream.expect_complete()?;
139 stream.expect(&PtxToken::Comma)?;
140 let srcmem = AddressOperand::parse(stream)?;
141 stream.expect_complete()?;
142 stream.expect(&PtxToken::Comma)?;
143 let size = GeneralOperand::parse(stream)?;
144 stream.expect_complete()?;
145 stream.expect(&PtxToken::Comma)?;
146 let mbar = AddressOperand::parse(stream)?;
147 stream.expect_complete()?;
148 let saved_pos = stream.position();
149 let has_comma = stream.expect(&PtxToken::Comma).is_ok();
150 if !has_comma {
151 stream.set_position(saved_pos);
152 }
153 let saved_pos = stream.position();
154 let cache_policy = match GeneralOperand::parse(stream) {
155 Ok(val) => Some(val),
156 Err(_) => {
157 stream.set_position(saved_pos);
158 None
159 }
160 };
161 stream.expect_complete()?;
162 stream.expect_complete()?;
163 stream.expect(&PtxToken::Semicolon)?;
164 Ok(CpAsyncBulkDstSrcCompletionMechanismLevelCacheHint {
165 async_,
166 bulk,
167 dst,
168 src,
169 completion_mechanism,
170 level_cache_hint,
171 dstmem,
172 srcmem,
173 size,
174 mbar,
175 cache_policy,
176 })
177 }
178 }
179
180
181}
182
183pub mod section_1 {
184 use super::*;
185 use crate::r#type::instruction::cp_async_bulk::section_1::*;
186
187 impl PtxParser for CompletionMechanism {
192 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
193 {
195 let saved_pos = stream.position();
196 if stream.expect_string(".mbarrier::complete_tx::bytes").is_ok() {
197 return Ok(CompletionMechanism::MbarrierCompleteTxBytes);
198 }
199 stream.set_position(saved_pos);
200 }
201 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
202 let expected = &[".mbarrier::complete_tx::bytes"];
203 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
204 Err(crate::parser::unexpected_value(span, expected, found))
205 }
206 }
207
208 impl PtxParser for Dst {
209 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
210 {
212 let saved_pos = stream.position();
213 if stream.expect_string(".shared::cluster").is_ok() {
214 return Ok(Dst::SharedCluster);
215 }
216 stream.set_position(saved_pos);
217 }
218 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
219 let expected = &[".shared::cluster"];
220 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
221 Err(crate::parser::unexpected_value(span, expected, found))
222 }
223 }
224
225 impl PtxParser for LevelCacheHint {
226 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
227 {
229 let saved_pos = stream.position();
230 if stream.expect_string(".L2::cache_hint").is_ok() {
231 return Ok(LevelCacheHint::L2CacheHint);
232 }
233 stream.set_position(saved_pos);
234 }
235 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
236 let expected = &[".L2::cache_hint"];
237 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
238 Err(crate::parser::unexpected_value(span, expected, found))
239 }
240 }
241
242 impl PtxParser for Multicast {
243 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
244 {
246 let saved_pos = stream.position();
247 if stream.expect_string(".multicast::cluster").is_ok() {
248 return Ok(Multicast::MulticastCluster);
249 }
250 stream.set_position(saved_pos);
251 }
252 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
253 let expected = &[".multicast::cluster"];
254 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
255 Err(crate::parser::unexpected_value(span, expected, found))
256 }
257 }
258
259 impl PtxParser for Src {
260 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
261 {
263 let saved_pos = stream.position();
264 if stream.expect_string(".global").is_ok() {
265 return Ok(Src::Global);
266 }
267 stream.set_position(saved_pos);
268 }
269 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
270 let expected = &[".global"];
271 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
272 Err(crate::parser::unexpected_value(span, expected, found))
273 }
274 }
275
276 impl PtxParser for CpAsyncBulkDstSrcCompletionMechanismMulticastLevelCacheHint {
277 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
278 stream.expect_string("cp")?;
279 stream.expect_string(".async")?;
280 let async_ = ();
281 stream.expect_complete()?;
282 stream.expect_string(".bulk")?;
283 let bulk = ();
284 stream.expect_complete()?;
285 let dst = Dst::parse(stream)?;
286 stream.expect_complete()?;
287 let src = Src::parse(stream)?;
288 stream.expect_complete()?;
289 let completion_mechanism = CompletionMechanism::parse(stream)?;
290 stream.expect_complete()?;
291 let saved_pos = stream.position();
292 let multicast = match Multicast::parse(stream) {
293 Ok(val) => Some(val),
294 Err(_) => {
295 stream.set_position(saved_pos);
296 None
297 }
298 };
299 stream.expect_complete()?;
300 let saved_pos = stream.position();
301 let level_cache_hint = match LevelCacheHint::parse(stream) {
302 Ok(val) => Some(val),
303 Err(_) => {
304 stream.set_position(saved_pos);
305 None
306 }
307 };
308 stream.expect_complete()?;
309 let dstmem = AddressOperand::parse(stream)?;
310 stream.expect_complete()?;
311 stream.expect(&PtxToken::Comma)?;
312 let srcmem = AddressOperand::parse(stream)?;
313 stream.expect_complete()?;
314 stream.expect(&PtxToken::Comma)?;
315 let size = GeneralOperand::parse(stream)?;
316 stream.expect_complete()?;
317 stream.expect(&PtxToken::Comma)?;
318 let mbar = AddressOperand::parse(stream)?;
319 stream.expect_complete()?;
320 let saved_pos = stream.position();
321 let has_comma = stream.expect(&PtxToken::Comma).is_ok();
322 if !has_comma {
323 stream.set_position(saved_pos);
324 }
325 let saved_pos = stream.position();
326 let ctamask = match GeneralOperand::parse(stream) {
327 Ok(val) => Some(val),
328 Err(_) => {
329 stream.set_position(saved_pos);
330 None
331 }
332 };
333 stream.expect_complete()?;
334 let saved_pos = stream.position();
335 let has_comma = stream.expect(&PtxToken::Comma).is_ok();
336 if !has_comma {
337 stream.set_position(saved_pos);
338 }
339 let saved_pos = stream.position();
340 let cache_policy = match GeneralOperand::parse(stream) {
341 Ok(val) => Some(val),
342 Err(_) => {
343 stream.set_position(saved_pos);
344 None
345 }
346 };
347 stream.expect_complete()?;
348 stream.expect_complete()?;
349 stream.expect(&PtxToken::Semicolon)?;
350 Ok(CpAsyncBulkDstSrcCompletionMechanismMulticastLevelCacheHint {
351 async_,
352 bulk,
353 dst,
354 src,
355 completion_mechanism,
356 multicast,
357 level_cache_hint,
358 dstmem,
359 srcmem,
360 size,
361 mbar,
362 ctamask,
363 cache_policy,
364 })
365 }
366 }
367
368
369}
370
371pub mod section_2 {
372 use super::*;
373 use crate::r#type::instruction::cp_async_bulk::section_2::*;
374
375 impl PtxParser for CompletionMechanism {
380 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
381 {
383 let saved_pos = stream.position();
384 if stream.expect_string(".mbarrier::complete_tx::bytes").is_ok() {
385 return Ok(CompletionMechanism::MbarrierCompleteTxBytes);
386 }
387 stream.set_position(saved_pos);
388 }
389 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
390 let expected = &[".mbarrier::complete_tx::bytes"];
391 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
392 Err(crate::parser::unexpected_value(span, expected, found))
393 }
394 }
395
396 impl PtxParser for Dst {
397 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
398 {
400 let saved_pos = stream.position();
401 if stream.expect_string(".shared::cluster").is_ok() {
402 return Ok(Dst::SharedCluster);
403 }
404 stream.set_position(saved_pos);
405 }
406 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
407 let expected = &[".shared::cluster"];
408 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
409 Err(crate::parser::unexpected_value(span, expected, found))
410 }
411 }
412
413 impl PtxParser for Src {
414 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
415 {
417 let saved_pos = stream.position();
418 if stream.expect_string(".shared::cta").is_ok() {
419 return Ok(Src::SharedCta);
420 }
421 stream.set_position(saved_pos);
422 }
423 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
424 let expected = &[".shared::cta"];
425 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
426 Err(crate::parser::unexpected_value(span, expected, found))
427 }
428 }
429
430 impl PtxParser for CpAsyncBulkDstSrcCompletionMechanism {
431 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
432 stream.expect_string("cp")?;
433 stream.expect_string(".async")?;
434 let async_ = ();
435 stream.expect_complete()?;
436 stream.expect_string(".bulk")?;
437 let bulk = ();
438 stream.expect_complete()?;
439 let dst = Dst::parse(stream)?;
440 stream.expect_complete()?;
441 let src = Src::parse(stream)?;
442 stream.expect_complete()?;
443 let completion_mechanism = CompletionMechanism::parse(stream)?;
444 stream.expect_complete()?;
445 let dstmem = AddressOperand::parse(stream)?;
446 stream.expect_complete()?;
447 stream.expect(&PtxToken::Comma)?;
448 let srcmem = AddressOperand::parse(stream)?;
449 stream.expect_complete()?;
450 stream.expect(&PtxToken::Comma)?;
451 let size = GeneralOperand::parse(stream)?;
452 stream.expect_complete()?;
453 stream.expect(&PtxToken::Comma)?;
454 let mbar = AddressOperand::parse(stream)?;
455 stream.expect_complete()?;
456 stream.expect_complete()?;
457 stream.expect(&PtxToken::Semicolon)?;
458 Ok(CpAsyncBulkDstSrcCompletionMechanism {
459 async_,
460 bulk,
461 dst,
462 src,
463 completion_mechanism,
464 dstmem,
465 srcmem,
466 size,
467 mbar,
468 })
469 }
470 }
471
472
473}
474
475pub mod section_3 {
476 use super::*;
477 use crate::r#type::instruction::cp_async_bulk::section_3::*;
478
479 impl PtxParser for CompletionMechanism {
484 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
485 {
487 let saved_pos = stream.position();
488 if stream.expect_string(".bulk_group").is_ok() {
489 return Ok(CompletionMechanism::BulkGroup);
490 }
491 stream.set_position(saved_pos);
492 }
493 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
494 let expected = &[".bulk_group"];
495 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
496 Err(crate::parser::unexpected_value(span, expected, found))
497 }
498 }
499
500 impl PtxParser for Dst {
501 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
502 {
504 let saved_pos = stream.position();
505 if stream.expect_string(".global").is_ok() {
506 return Ok(Dst::Global);
507 }
508 stream.set_position(saved_pos);
509 }
510 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
511 let expected = &[".global"];
512 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
513 Err(crate::parser::unexpected_value(span, expected, found))
514 }
515 }
516
517 impl PtxParser for LevelCacheHint {
518 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
519 {
521 let saved_pos = stream.position();
522 if stream.expect_string(".L2::cache_hint").is_ok() {
523 return Ok(LevelCacheHint::L2CacheHint);
524 }
525 stream.set_position(saved_pos);
526 }
527 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
528 let expected = &[".L2::cache_hint"];
529 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
530 Err(crate::parser::unexpected_value(span, expected, found))
531 }
532 }
533
534 impl PtxParser for Src {
535 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
536 {
538 let saved_pos = stream.position();
539 if stream.expect_string(".shared::cta").is_ok() {
540 return Ok(Src::SharedCta);
541 }
542 stream.set_position(saved_pos);
543 }
544 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
545 let expected = &[".shared::cta"];
546 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
547 Err(crate::parser::unexpected_value(span, expected, found))
548 }
549 }
550
551 impl PtxParser for CpAsyncBulkDstSrcCompletionMechanismLevelCacheHintCpMask {
552 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
553 stream.expect_string("cp")?;
554 stream.expect_string(".async")?;
555 let async_ = ();
556 stream.expect_complete()?;
557 stream.expect_string(".bulk")?;
558 let bulk = ();
559 stream.expect_complete()?;
560 let dst = Dst::parse(stream)?;
561 stream.expect_complete()?;
562 let src = Src::parse(stream)?;
563 stream.expect_complete()?;
564 let completion_mechanism = CompletionMechanism::parse(stream)?;
565 stream.expect_complete()?;
566 let saved_pos = stream.position();
567 let level_cache_hint = match LevelCacheHint::parse(stream) {
568 Ok(val) => Some(val),
569 Err(_) => {
570 stream.set_position(saved_pos);
571 None
572 }
573 };
574 stream.expect_complete()?;
575 let saved_pos = stream.position();
576 let cp_mask = stream.expect_string(".cp_mask").is_ok();
577 if !cp_mask {
578 stream.set_position(saved_pos);
579 }
580 stream.expect_complete()?;
581 let dstmem = AddressOperand::parse(stream)?;
582 stream.expect_complete()?;
583 stream.expect(&PtxToken::Comma)?;
584 let srcmem = AddressOperand::parse(stream)?;
585 stream.expect_complete()?;
586 stream.expect(&PtxToken::Comma)?;
587 let size = GeneralOperand::parse(stream)?;
588 stream.expect_complete()?;
589 let saved_pos = stream.position();
590 let has_comma = stream.expect(&PtxToken::Comma).is_ok();
591 if !has_comma {
592 stream.set_position(saved_pos);
593 }
594 let saved_pos = stream.position();
595 let cache_policy = match GeneralOperand::parse(stream) {
596 Ok(val) => Some(val),
597 Err(_) => {
598 stream.set_position(saved_pos);
599 None
600 }
601 };
602 stream.expect_complete()?;
603 let saved_pos = stream.position();
604 let has_comma = stream.expect(&PtxToken::Comma).is_ok();
605 if !has_comma {
606 stream.set_position(saved_pos);
607 }
608 let saved_pos = stream.position();
609 let bytemask = match GeneralOperand::parse(stream) {
610 Ok(val) => Some(val),
611 Err(_) => {
612 stream.set_position(saved_pos);
613 None
614 }
615 };
616 stream.expect_complete()?;
617 stream.expect_complete()?;
618 stream.expect(&PtxToken::Semicolon)?;
619 Ok(CpAsyncBulkDstSrcCompletionMechanismLevelCacheHintCpMask {
620 async_,
621 bulk,
622 dst,
623 src,
624 completion_mechanism,
625 level_cache_hint,
626 cp_mask,
627 dstmem,
628 srcmem,
629 size,
630 cache_policy,
631 bytemask,
632 })
633 }
634 }
635
636
637}
638