1#![allow(unused)]
51
52use crate::lexer::PtxToken;
53use crate::unparser::{PtxUnparser, common::*};
54
55pub mod section_0 {
56 use super::*;
57 use crate::r#type::instruction::tcgen05_mma_sp::section_0::*;
58
59 impl PtxUnparser for Tcgen05MmaSpCtaGroupKind {
60 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
61 push_opcode(tokens, "tcgen05");
62 push_directive(tokens, "mma");
63 push_directive(tokens, "sp");
64 match &self.cta_group {
65 CtaGroup::CtaGroup1 => {
66 push_directive(tokens, "cta_group::1");
67 }
68 CtaGroup::CtaGroup2 => {
69 push_directive(tokens, "cta_group::2");
70 }
71 }
72 match &self.kind {
73 Kind::KindF8f6f4 => {
74 push_directive(tokens, "kind::f8f6f4");
75 }
76 Kind::KindTf32 => {
77 push_directive(tokens, "kind::tf32");
78 }
79 Kind::KindF16 => {
80 push_directive(tokens, "kind::f16");
81 }
82 }
83 self.d_tmem.unparse_tokens(tokens);
84 tokens.push(PtxToken::Comma);
85 self.a_desc.unparse_tokens(tokens);
86 tokens.push(PtxToken::Comma);
87 self.b_desc.unparse_tokens(tokens);
88 tokens.push(PtxToken::Comma);
89 self.sp_meta_tmem.unparse_tokens(tokens);
90 tokens.push(PtxToken::Comma);
91 self.idesc.unparse_tokens(tokens);
92 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
93 if let Some(opt_0) = self.disable_output_lane.as_ref() {
94 opt_0.unparse_tokens(tokens);
95 }
96 tokens.push(PtxToken::Comma);
97 self.enable_input_d.unparse_tokens(tokens);
98 if self.scale_input_d.is_some() { tokens.push(PtxToken::Comma); }
99 if let Some(opt_1) = self.scale_input_d.as_ref() {
100 opt_1.unparse_tokens(tokens);
101 }
102 tokens.push(PtxToken::Semicolon);
103 }
104 }
105
106 impl PtxUnparser for Tcgen05MmaSpCtaGroupKind1 {
107 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
108 push_opcode(tokens, "tcgen05");
109 push_directive(tokens, "mma");
110 push_directive(tokens, "sp");
111 match &self.cta_group {
112 CtaGroup::CtaGroup1 => {
113 push_directive(tokens, "cta_group::1");
114 }
115 CtaGroup::CtaGroup2 => {
116 push_directive(tokens, "cta_group::2");
117 }
118 }
119 match &self.kind {
120 Kind::KindF8f6f4 => {
121 push_directive(tokens, "kind::f8f6f4");
122 }
123 Kind::KindTf32 => {
124 push_directive(tokens, "kind::tf32");
125 }
126 Kind::KindF16 => {
127 push_directive(tokens, "kind::f16");
128 }
129 }
130 self.d_tmem.unparse_tokens(tokens);
131 tokens.push(PtxToken::Comma);
132 self.a_tmem.unparse_tokens(tokens);
133 tokens.push(PtxToken::Comma);
134 self.b_desc.unparse_tokens(tokens);
135 tokens.push(PtxToken::Comma);
136 self.sp_meta_tmem.unparse_tokens(tokens);
137 tokens.push(PtxToken::Comma);
138 self.idesc.unparse_tokens(tokens);
139 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
140 if let Some(opt_2) = self.disable_output_lane.as_ref() {
141 opt_2.unparse_tokens(tokens);
142 }
143 tokens.push(PtxToken::Comma);
144 self.enable_input_d.unparse_tokens(tokens);
145 if self.scale_input_d.is_some() { tokens.push(PtxToken::Comma); }
146 if let Some(opt_3) = self.scale_input_d.as_ref() {
147 opt_3.unparse_tokens(tokens);
148 }
149 tokens.push(PtxToken::Semicolon);
150 }
151 }
152
153}
154
155pub mod section_1 {
156 use super::*;
157 use crate::r#type::instruction::tcgen05_mma_sp::section_1::*;
158
159 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindBlockScaleScaleVectorsize {
160 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
161 push_opcode(tokens, "tcgen05");
162 push_directive(tokens, "mma");
163 push_directive(tokens, "sp");
164 match &self.cta_group {
165 CtaGroup::CtaGroup1 => {
166 push_directive(tokens, "cta_group::1");
167 }
168 CtaGroup::CtaGroup2 => {
169 push_directive(tokens, "cta_group::2");
170 }
171 }
172 match &self.kind {
173 Kind::KindMxf8f6f4 => {
174 push_directive(tokens, "kind::mxf8f6f4");
175 }
176 Kind::KindMxf4nvf4 => {
177 push_directive(tokens, "kind::mxf4nvf4");
178 }
179 Kind::KindMxf4 => {
180 push_directive(tokens, "kind::mxf4");
181 }
182 }
183 push_directive(tokens, "block_scale");
184 if let Some(scale_vectorsize_4) = self.scale_vectorsize.as_ref() {
185 match scale_vectorsize_4 {
186 ScaleVectorsize::ScaleVec1x => {
187 push_directive(tokens, "scale_vec::1X");
188 }
189 ScaleVectorsize::ScaleVec2x => {
190 push_directive(tokens, "scale_vec::2X");
191 }
192 ScaleVectorsize::ScaleVec4x => {
193 push_directive(tokens, "scale_vec::4X");
194 }
195 ScaleVectorsize::Block16 => {
196 push_directive(tokens, "block16");
197 }
198 ScaleVectorsize::Block32 => {
199 push_directive(tokens, "block32");
200 }
201 }
202 }
203 self.d_tmem.unparse_tokens(tokens);
204 tokens.push(PtxToken::Comma);
205 self.a_desc.unparse_tokens(tokens);
206 tokens.push(PtxToken::Comma);
207 self.b_desc.unparse_tokens(tokens);
208 tokens.push(PtxToken::Comma);
209 self.sp_meta_tmem.unparse_tokens(tokens);
210 tokens.push(PtxToken::Comma);
211 self.idesc.unparse_tokens(tokens);
212 tokens.push(PtxToken::Comma);
213 self.scale_a_tmem.unparse_tokens(tokens);
214 tokens.push(PtxToken::Comma);
215 self.scale_b_tmem.unparse_tokens(tokens);
216 tokens.push(PtxToken::Comma);
217 self.enable_input_d.unparse_tokens(tokens);
218 tokens.push(PtxToken::Semicolon);
219 }
220 }
221
222 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindBlockScaleScaleVectorsize1 {
223 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
224 push_opcode(tokens, "tcgen05");
225 push_directive(tokens, "mma");
226 push_directive(tokens, "sp");
227 match &self.cta_group {
228 CtaGroup::CtaGroup1 => {
229 push_directive(tokens, "cta_group::1");
230 }
231 CtaGroup::CtaGroup2 => {
232 push_directive(tokens, "cta_group::2");
233 }
234 }
235 match &self.kind {
236 Kind::KindMxf8f6f4 => {
237 push_directive(tokens, "kind::mxf8f6f4");
238 }
239 Kind::KindMxf4nvf4 => {
240 push_directive(tokens, "kind::mxf4nvf4");
241 }
242 Kind::KindMxf4 => {
243 push_directive(tokens, "kind::mxf4");
244 }
245 }
246 push_directive(tokens, "block_scale");
247 if let Some(scale_vectorsize_5) = self.scale_vectorsize.as_ref() {
248 match scale_vectorsize_5 {
249 ScaleVectorsize::ScaleVec1x => {
250 push_directive(tokens, "scale_vec::1X");
251 }
252 ScaleVectorsize::ScaleVec2x => {
253 push_directive(tokens, "scale_vec::2X");
254 }
255 ScaleVectorsize::ScaleVec4x => {
256 push_directive(tokens, "scale_vec::4X");
257 }
258 ScaleVectorsize::Block16 => {
259 push_directive(tokens, "block16");
260 }
261 ScaleVectorsize::Block32 => {
262 push_directive(tokens, "block32");
263 }
264 }
265 }
266 self.d_tmem.unparse_tokens(tokens);
267 tokens.push(PtxToken::Comma);
268 self.a_tmem.unparse_tokens(tokens);
269 tokens.push(PtxToken::Comma);
270 self.b_desc.unparse_tokens(tokens);
271 tokens.push(PtxToken::Comma);
272 self.sp_meta_tmem.unparse_tokens(tokens);
273 tokens.push(PtxToken::Comma);
274 self.idesc.unparse_tokens(tokens);
275 tokens.push(PtxToken::Comma);
276 self.scale_a_tmem.unparse_tokens(tokens);
277 tokens.push(PtxToken::Comma);
278 self.scale_b_tmem.unparse_tokens(tokens);
279 tokens.push(PtxToken::Comma);
280 self.enable_input_d.unparse_tokens(tokens);
281 tokens.push(PtxToken::Semicolon);
282 }
283 }
284
285}
286
287pub mod section_2 {
288 use super::*;
289 use crate::r#type::instruction::tcgen05_mma_sp::section_2::*;
290
291 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindCollectorUsage {
292 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
293 push_opcode(tokens, "tcgen05");
294 push_directive(tokens, "mma");
295 push_directive(tokens, "sp");
296 match &self.cta_group {
297 CtaGroup::CtaGroup1 => {
298 push_directive(tokens, "cta_group::1");
299 }
300 CtaGroup::CtaGroup2 => {
301 push_directive(tokens, "cta_group::2");
302 }
303 }
304 match &self.kind {
305 Kind::KindF8f6f4 => {
306 push_directive(tokens, "kind::f8f6f4");
307 }
308 Kind::KindTf32 => {
309 push_directive(tokens, "kind::tf32");
310 }
311 Kind::KindF16 => {
312 push_directive(tokens, "kind::f16");
313 }
314 }
315 match &self.collector_usage {
316 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
317 let mut combined = String::new();
318 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
319 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
320 tokens.push(PtxToken::Dot);
321 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
322 }
323 }
324 self.d_tmem.unparse_tokens(tokens);
325 tokens.push(PtxToken::Comma);
326 self.a_desc.unparse_tokens(tokens);
327 tokens.push(PtxToken::Comma);
328 self.b_desc.unparse_tokens(tokens);
329 tokens.push(PtxToken::Comma);
330 self.sp_meta_tmem.unparse_tokens(tokens);
331 tokens.push(PtxToken::Comma);
332 self.idesc.unparse_tokens(tokens);
333 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
334 if let Some(opt_6) = self.disable_output_lane.as_ref() {
335 opt_6.unparse_tokens(tokens);
336 }
337 tokens.push(PtxToken::Comma);
338 self.enable_input_d.unparse_tokens(tokens);
339 if self.scale_input_d.is_some() { tokens.push(PtxToken::Comma); }
340 if let Some(opt_7) = self.scale_input_d.as_ref() {
341 opt_7.unparse_tokens(tokens);
342 }
343 tokens.push(PtxToken::Semicolon);
344 }
345 }
346
347 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindAshiftCollectorUsage {
348 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
349 push_opcode(tokens, "tcgen05");
350 push_directive(tokens, "mma");
351 push_directive(tokens, "sp");
352 match &self.cta_group {
353 CtaGroup::CtaGroup1 => {
354 push_directive(tokens, "cta_group::1");
355 }
356 CtaGroup::CtaGroup2 => {
357 push_directive(tokens, "cta_group::2");
358 }
359 }
360 match &self.kind {
361 Kind::KindF8f6f4 => {
362 push_directive(tokens, "kind::f8f6f4");
363 }
364 Kind::KindTf32 => {
365 push_directive(tokens, "kind::tf32");
366 }
367 Kind::KindF16 => {
368 push_directive(tokens, "kind::f16");
369 }
370 }
371 push_directive(tokens, "ashift");
372 if let Some(collector_usage_8) = self.collector_usage.as_ref() {
373 match collector_usage_8 {
374 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
375 let mut combined = String::new();
376 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
377 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
378 tokens.push(PtxToken::Dot);
379 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
380 }
381 }
382 }
383 self.d_tmem.unparse_tokens(tokens);
384 tokens.push(PtxToken::Comma);
385 self.a_tmem.unparse_tokens(tokens);
386 tokens.push(PtxToken::Comma);
387 self.b_desc.unparse_tokens(tokens);
388 tokens.push(PtxToken::Comma);
389 self.sp_meta_tmem.unparse_tokens(tokens);
390 tokens.push(PtxToken::Comma);
391 self.idesc.unparse_tokens(tokens);
392 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
393 if let Some(opt_9) = self.disable_output_lane.as_ref() {
394 opt_9.unparse_tokens(tokens);
395 }
396 tokens.push(PtxToken::Comma);
397 self.enable_input_d.unparse_tokens(tokens);
398 if self.scale_input_d.is_some() { tokens.push(PtxToken::Comma); }
399 if let Some(opt_10) = self.scale_input_d.as_ref() {
400 opt_10.unparse_tokens(tokens);
401 }
402 tokens.push(PtxToken::Semicolon);
403 }
404 }
405
406 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindAshiftCollectorUsage1 {
407 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
408 push_opcode(tokens, "tcgen05");
409 push_directive(tokens, "mma");
410 push_directive(tokens, "sp");
411 match &self.cta_group {
412 CtaGroup::CtaGroup1 => {
413 push_directive(tokens, "cta_group::1");
414 }
415 CtaGroup::CtaGroup2 => {
416 push_directive(tokens, "cta_group::2");
417 }
418 }
419 match &self.kind {
420 Kind::KindF8f6f4 => {
421 push_directive(tokens, "kind::f8f6f4");
422 }
423 Kind::KindTf32 => {
424 push_directive(tokens, "kind::tf32");
425 }
426 Kind::KindF16 => {
427 push_directive(tokens, "kind::f16");
428 }
429 }
430 if self.ashift {
431 push_directive(tokens, "ashift");
432 }
433 match &self.collector_usage {
434 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
435 let mut combined = String::new();
436 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
437 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
438 tokens.push(PtxToken::Dot);
439 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
440 }
441 }
442 self.d_tmem.unparse_tokens(tokens);
443 tokens.push(PtxToken::Comma);
444 self.a_tmem.unparse_tokens(tokens);
445 tokens.push(PtxToken::Comma);
446 self.b_desc.unparse_tokens(tokens);
447 tokens.push(PtxToken::Comma);
448 self.sp_meta_tmem.unparse_tokens(tokens);
449 tokens.push(PtxToken::Comma);
450 self.idesc.unparse_tokens(tokens);
451 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
452 if let Some(opt_11) = self.disable_output_lane.as_ref() {
453 opt_11.unparse_tokens(tokens);
454 }
455 tokens.push(PtxToken::Comma);
456 self.enable_input_d.unparse_tokens(tokens);
457 if self.scale_input_d.is_some() { tokens.push(PtxToken::Comma); }
458 if let Some(opt_12) = self.scale_input_d.as_ref() {
459 opt_12.unparse_tokens(tokens);
460 }
461 tokens.push(PtxToken::Semicolon);
462 }
463 }
464
465}
466
467pub mod section_3 {
468 use super::*;
469 use crate::r#type::instruction::tcgen05_mma_sp::section_3::*;
470
471 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindBlockScaleScaleVectorsizeCollectorUsage {
472 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
473 push_opcode(tokens, "tcgen05");
474 push_directive(tokens, "mma");
475 push_directive(tokens, "sp");
476 match &self.cta_group {
477 CtaGroup::CtaGroup1 => {
478 push_directive(tokens, "cta_group::1");
479 }
480 CtaGroup::CtaGroup2 => {
481 push_directive(tokens, "cta_group::2");
482 }
483 }
484 match &self.kind {
485 Kind::KindMxf8f6f4 => {
486 push_directive(tokens, "kind::mxf8f6f4");
487 }
488 Kind::KindMxf4nvf4 => {
489 push_directive(tokens, "kind::mxf4nvf4");
490 }
491 Kind::KindMxf4 => {
492 push_directive(tokens, "kind::mxf4");
493 }
494 }
495 push_directive(tokens, "block_scale");
496 if let Some(scale_vectorsize_13) = self.scale_vectorsize.as_ref() {
497 match scale_vectorsize_13 {
498 ScaleVectorsize::ScaleVec1x => {
499 push_directive(tokens, "scale_vec::1X");
500 }
501 ScaleVectorsize::ScaleVec2x => {
502 push_directive(tokens, "scale_vec::2X");
503 }
504 ScaleVectorsize::ScaleVec4x => {
505 push_directive(tokens, "scale_vec::4X");
506 }
507 ScaleVectorsize::Block16 => {
508 push_directive(tokens, "block16");
509 }
510 ScaleVectorsize::Block32 => {
511 push_directive(tokens, "block32");
512 }
513 }
514 }
515 match &self.collector_usage {
516 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
517 let mut combined = String::new();
518 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
519 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
520 tokens.push(PtxToken::Dot);
521 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
522 }
523 }
524 self.d_tmem.unparse_tokens(tokens);
525 tokens.push(PtxToken::Comma);
526 self.a_desc.unparse_tokens(tokens);
527 tokens.push(PtxToken::Comma);
528 self.b_desc.unparse_tokens(tokens);
529 tokens.push(PtxToken::Comma);
530 self.sp_meta_tmem.unparse_tokens(tokens);
531 tokens.push(PtxToken::Comma);
532 self.idesc.unparse_tokens(tokens);
533 tokens.push(PtxToken::Comma);
534 self.scale_a_tmem.unparse_tokens(tokens);
535 tokens.push(PtxToken::Comma);
536 self.scale_b_tmem.unparse_tokens(tokens);
537 tokens.push(PtxToken::Comma);
538 self.enable_input_d.unparse_tokens(tokens);
539 tokens.push(PtxToken::Semicolon);
540 }
541 }
542
543 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindBlockScaleScaleVectorsizeCollectorUsage1 {
544 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
545 push_opcode(tokens, "tcgen05");
546 push_directive(tokens, "mma");
547 push_directive(tokens, "sp");
548 match &self.cta_group {
549 CtaGroup::CtaGroup1 => {
550 push_directive(tokens, "cta_group::1");
551 }
552 CtaGroup::CtaGroup2 => {
553 push_directive(tokens, "cta_group::2");
554 }
555 }
556 match &self.kind {
557 Kind::KindMxf8f6f4 => {
558 push_directive(tokens, "kind::mxf8f6f4");
559 }
560 Kind::KindMxf4nvf4 => {
561 push_directive(tokens, "kind::mxf4nvf4");
562 }
563 Kind::KindMxf4 => {
564 push_directive(tokens, "kind::mxf4");
565 }
566 }
567 push_directive(tokens, "block_scale");
568 if let Some(scale_vectorsize_14) = self.scale_vectorsize.as_ref() {
569 match scale_vectorsize_14 {
570 ScaleVectorsize::ScaleVec1x => {
571 push_directive(tokens, "scale_vec::1X");
572 }
573 ScaleVectorsize::ScaleVec2x => {
574 push_directive(tokens, "scale_vec::2X");
575 }
576 ScaleVectorsize::ScaleVec4x => {
577 push_directive(tokens, "scale_vec::4X");
578 }
579 ScaleVectorsize::Block16 => {
580 push_directive(tokens, "block16");
581 }
582 ScaleVectorsize::Block32 => {
583 push_directive(tokens, "block32");
584 }
585 }
586 }
587 match &self.collector_usage {
588 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
589 let mut combined = String::new();
590 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
591 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
592 tokens.push(PtxToken::Dot);
593 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
594 }
595 }
596 self.d_tmem.unparse_tokens(tokens);
597 tokens.push(PtxToken::Comma);
598 self.a_tmem.unparse_tokens(tokens);
599 tokens.push(PtxToken::Comma);
600 self.b_desc.unparse_tokens(tokens);
601 tokens.push(PtxToken::Comma);
602 self.sp_meta_tmem.unparse_tokens(tokens);
603 tokens.push(PtxToken::Comma);
604 self.idesc.unparse_tokens(tokens);
605 tokens.push(PtxToken::Comma);
606 self.scale_a_tmem.unparse_tokens(tokens);
607 tokens.push(PtxToken::Comma);
608 self.scale_b_tmem.unparse_tokens(tokens);
609 tokens.push(PtxToken::Comma);
610 self.enable_input_d.unparse_tokens(tokens);
611 tokens.push(PtxToken::Semicolon);
612 }
613 }
614
615}
616
617pub mod section_4 {
618 use super::*;
619 use crate::r#type::instruction::tcgen05_mma_sp::section_4::*;
620
621 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindI8 {
622 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
623 push_opcode(tokens, "tcgen05");
624 push_directive(tokens, "mma");
625 push_directive(tokens, "sp");
626 match &self.cta_group {
627 CtaGroup::CtaGroup1 => {
628 push_directive(tokens, "cta_group::1");
629 }
630 CtaGroup::CtaGroup2 => {
631 push_directive(tokens, "cta_group::2");
632 }
633 }
634 push_directive(tokens, "kind::i8");
635 self.d_tmem.unparse_tokens(tokens);
636 tokens.push(PtxToken::Comma);
637 self.a_desc.unparse_tokens(tokens);
638 tokens.push(PtxToken::Comma);
639 self.b_desc.unparse_tokens(tokens);
640 tokens.push(PtxToken::Comma);
641 self.sp_meta_tmem.unparse_tokens(tokens);
642 tokens.push(PtxToken::Comma);
643 self.idesc.unparse_tokens(tokens);
644 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
645 if let Some(opt_15) = self.disable_output_lane.as_ref() {
646 opt_15.unparse_tokens(tokens);
647 }
648 tokens.push(PtxToken::Comma);
649 self.enable_input_d.unparse_tokens(tokens);
650 tokens.push(PtxToken::Semicolon);
651 }
652 }
653
654 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindI81 {
655 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
656 push_opcode(tokens, "tcgen05");
657 push_directive(tokens, "mma");
658 push_directive(tokens, "sp");
659 match &self.cta_group {
660 CtaGroup::CtaGroup1 => {
661 push_directive(tokens, "cta_group::1");
662 }
663 CtaGroup::CtaGroup2 => {
664 push_directive(tokens, "cta_group::2");
665 }
666 }
667 push_directive(tokens, "kind::i8");
668 self.d_tmem.unparse_tokens(tokens);
669 tokens.push(PtxToken::Comma);
670 self.a_tmem.unparse_tokens(tokens);
671 tokens.push(PtxToken::Comma);
672 self.b_desc.unparse_tokens(tokens);
673 tokens.push(PtxToken::Comma);
674 self.sp_meta_tmem.unparse_tokens(tokens);
675 tokens.push(PtxToken::Comma);
676 self.idesc.unparse_tokens(tokens);
677 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
678 if let Some(opt_16) = self.disable_output_lane.as_ref() {
679 opt_16.unparse_tokens(tokens);
680 }
681 tokens.push(PtxToken::Comma);
682 self.enable_input_d.unparse_tokens(tokens);
683 tokens.push(PtxToken::Semicolon);
684 }
685 }
686
687}
688
689pub mod section_5 {
690 use super::*;
691 use crate::r#type::instruction::tcgen05_mma_sp::section_5::*;
692
693 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindI8CollectorUsage {
694 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
695 push_opcode(tokens, "tcgen05");
696 push_directive(tokens, "mma");
697 push_directive(tokens, "sp");
698 match &self.cta_group {
699 CtaGroup::CtaGroup1 => {
700 push_directive(tokens, "cta_group::1");
701 }
702 CtaGroup::CtaGroup2 => {
703 push_directive(tokens, "cta_group::2");
704 }
705 }
706 push_directive(tokens, "kind::i8");
707 match &self.collector_usage {
708 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
709 let mut combined = String::new();
710 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
711 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
712 tokens.push(PtxToken::Dot);
713 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
714 }
715 }
716 self.d_tmem.unparse_tokens(tokens);
717 tokens.push(PtxToken::Comma);
718 self.a_desc.unparse_tokens(tokens);
719 tokens.push(PtxToken::Comma);
720 self.b_desc.unparse_tokens(tokens);
721 tokens.push(PtxToken::Comma);
722 self.sp_meta_tmem.unparse_tokens(tokens);
723 tokens.push(PtxToken::Comma);
724 self.idesc.unparse_tokens(tokens);
725 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
726 if let Some(opt_17) = self.disable_output_lane.as_ref() {
727 opt_17.unparse_tokens(tokens);
728 }
729 tokens.push(PtxToken::Comma);
730 self.enable_input_d.unparse_tokens(tokens);
731 tokens.push(PtxToken::Semicolon);
732 }
733 }
734
735 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindI8AshiftCollectorUsage {
736 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
737 push_opcode(tokens, "tcgen05");
738 push_directive(tokens, "mma");
739 push_directive(tokens, "sp");
740 match &self.cta_group {
741 CtaGroup::CtaGroup1 => {
742 push_directive(tokens, "cta_group::1");
743 }
744 CtaGroup::CtaGroup2 => {
745 push_directive(tokens, "cta_group::2");
746 }
747 }
748 push_directive(tokens, "kind::i8");
749 push_directive(tokens, "ashift");
750 if let Some(collector_usage_18) = self.collector_usage.as_ref() {
751 match collector_usage_18 {
752 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
753 let mut combined = String::new();
754 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
755 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
756 tokens.push(PtxToken::Dot);
757 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
758 }
759 }
760 }
761 self.d_tmem.unparse_tokens(tokens);
762 tokens.push(PtxToken::Comma);
763 self.a_tmem.unparse_tokens(tokens);
764 tokens.push(PtxToken::Comma);
765 self.b_desc.unparse_tokens(tokens);
766 tokens.push(PtxToken::Comma);
767 self.sp_meta_tmem.unparse_tokens(tokens);
768 tokens.push(PtxToken::Comma);
769 self.idesc.unparse_tokens(tokens);
770 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
771 if let Some(opt_19) = self.disable_output_lane.as_ref() {
772 opt_19.unparse_tokens(tokens);
773 }
774 tokens.push(PtxToken::Comma);
775 self.enable_input_d.unparse_tokens(tokens);
776 tokens.push(PtxToken::Semicolon);
777 }
778 }
779
780 impl PtxUnparser for Tcgen05MmaSpCtaGroupKindI8AshiftCollectorUsage1 {
781 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
782 push_opcode(tokens, "tcgen05");
783 push_directive(tokens, "mma");
784 push_directive(tokens, "sp");
785 match &self.cta_group {
786 CtaGroup::CtaGroup1 => {
787 push_directive(tokens, "cta_group::1");
788 }
789 CtaGroup::CtaGroup2 => {
790 push_directive(tokens, "cta_group::2");
791 }
792 }
793 push_directive(tokens, "kind::i8");
794 if self.ashift {
795 push_directive(tokens, "ashift");
796 }
797 match &self.collector_usage {
798 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
799 let mut combined = String::new();
800 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
801 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
802 tokens.push(PtxToken::Dot);
803 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
804 }
805 }
806 self.d_tmem.unparse_tokens(tokens);
807 tokens.push(PtxToken::Comma);
808 self.a_tmem.unparse_tokens(tokens);
809 tokens.push(PtxToken::Comma);
810 self.b_desc.unparse_tokens(tokens);
811 tokens.push(PtxToken::Comma);
812 self.sp_meta_tmem.unparse_tokens(tokens);
813 tokens.push(PtxToken::Comma);
814 self.idesc.unparse_tokens(tokens);
815 if self.disable_output_lane.is_some() { tokens.push(PtxToken::Comma); }
816 if let Some(opt_20) = self.disable_output_lane.as_ref() {
817 opt_20.unparse_tokens(tokens);
818 }
819 tokens.push(PtxToken::Comma);
820 self.enable_input_d.unparse_tokens(tokens);
821 tokens.push(PtxToken::Semicolon);
822 }
823 }
824
825}
826