ptx_parser/unparser/instruction/
tcgen05_mma_ws.rs1#![allow(unused)]
20
21use crate::lexer::PtxToken;
22use crate::unparser::{PtxUnparser, common::*};
23
24pub mod section_0 {
25 use super::*;
26 use crate::r#type::instruction::tcgen05_mma_ws::section_0::*;
27
28 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindCollectorUsage {
29 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
30 push_opcode(tokens, "tcgen05");
31 push_directive(tokens, "mma");
32 push_directive(tokens, "ws");
33 push_directive(tokens, "cta_group::1");
34 match &self.kind {
35 Kind::KindF8f6f4 => {
36 push_directive(tokens, "kind::f8f6f4");
37 }
38 Kind::KindTf32 => {
39 push_directive(tokens, "kind::tf32");
40 }
41 Kind::KindF16 => {
42 push_directive(tokens, "kind::f16");
43 }
44 }
45 if self.collector_usage {
46 push_directive(tokens, "collector_usage");
47 }
48 self.d_tmem.unparse_tokens(tokens);
49 tokens.push(PtxToken::Comma);
50 self.a_desc.unparse_tokens(tokens);
51 tokens.push(PtxToken::Comma);
52 self.b_desc.unparse_tokens(tokens);
53 tokens.push(PtxToken::Comma);
54 self.idesc.unparse_tokens(tokens);
55 tokens.push(PtxToken::Comma);
56 self.enable_input_d.unparse_tokens(tokens);
57 if self.zero_column_mask_desc.is_some() { tokens.push(PtxToken::Comma); }
58 if let Some(opt_0) = self.zero_column_mask_desc.as_ref() {
59 opt_0.unparse_tokens(tokens);
60 }
61 tokens.push(PtxToken::Semicolon);
62 }
63 }
64
65 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindCollectorUsage1 {
66 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
67 push_opcode(tokens, "tcgen05");
68 push_directive(tokens, "mma");
69 push_directive(tokens, "ws");
70 push_directive(tokens, "cta_group::1");
71 match &self.kind {
72 Kind::KindF8f6f4 => {
73 push_directive(tokens, "kind::f8f6f4");
74 }
75 Kind::KindTf32 => {
76 push_directive(tokens, "kind::tf32");
77 }
78 Kind::KindF16 => {
79 push_directive(tokens, "kind::f16");
80 }
81 }
82 if self.collector_usage {
83 push_directive(tokens, "collector_usage");
84 }
85 self.d_tmem.unparse_tokens(tokens);
86 tokens.push(PtxToken::Comma);
87 self.a_tmem.unparse_tokens(tokens);
88 tokens.push(PtxToken::Comma);
89 self.b_desc.unparse_tokens(tokens);
90 tokens.push(PtxToken::Comma);
91 self.idesc.unparse_tokens(tokens);
92 tokens.push(PtxToken::Comma);
93 self.enable_input_d.unparse_tokens(tokens);
94 if self.zero_column_mask_desc.is_some() { tokens.push(PtxToken::Comma); }
95 if let Some(opt_1) = self.zero_column_mask_desc.as_ref() {
96 opt_1.unparse_tokens(tokens);
97 }
98 tokens.push(PtxToken::Semicolon);
99 }
100 }
101
102}
103
104pub mod section_1 {
105 use super::*;
106 use crate::r#type::instruction::tcgen05_mma_ws::section_1::*;
107
108 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindI8CollectorUsage {
109 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
110 push_opcode(tokens, "tcgen05");
111 push_directive(tokens, "mma");
112 push_directive(tokens, "ws");
113 push_directive(tokens, "cta_group::1");
114 push_directive(tokens, "kind::i8");
115 if let Some(collector_usage_2) = self.collector_usage.as_ref() {
116 match collector_usage_2 {
117 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
118 let mut combined = String::new();
119 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
120 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
121 tokens.push(PtxToken::Dot);
122 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
123 }
124 }
125 }
126 self.d_tmem.unparse_tokens(tokens);
127 tokens.push(PtxToken::Comma);
128 self.a_desc.unparse_tokens(tokens);
129 tokens.push(PtxToken::Comma);
130 self.b_desc.unparse_tokens(tokens);
131 tokens.push(PtxToken::Comma);
132 self.idesc.unparse_tokens(tokens);
133 tokens.push(PtxToken::Comma);
134 self.enable_input_d.unparse_tokens(tokens);
135 if self.zero_column_mask_desc.is_some() { tokens.push(PtxToken::Comma); }
136 if let Some(opt_3) = self.zero_column_mask_desc.as_ref() {
137 opt_3.unparse_tokens(tokens);
138 }
139 tokens.push(PtxToken::Semicolon);
140 }
141 }
142
143 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindI8CollectorUsage1 {
144 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
145 push_opcode(tokens, "tcgen05");
146 push_directive(tokens, "mma");
147 push_directive(tokens, "ws");
148 push_directive(tokens, "cta_group::1");
149 push_directive(tokens, "kind::i8");
150 if let Some(collector_usage_4) = self.collector_usage.as_ref() {
151 match collector_usage_4 {
152 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
153 let mut combined = String::new();
154 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
155 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
156 tokens.push(PtxToken::Dot);
157 tokens.push(PtxToken::Identifier(format!("{}{}", "collector", combined).into()));
158 }
159 }
160 }
161 self.d_tmem.unparse_tokens(tokens);
162 tokens.push(PtxToken::Comma);
163 self.a_tmem.unparse_tokens(tokens);
164 tokens.push(PtxToken::Comma);
165 self.b_desc.unparse_tokens(tokens);
166 tokens.push(PtxToken::Comma);
167 self.idesc.unparse_tokens(tokens);
168 tokens.push(PtxToken::Comma);
169 self.enable_input_d.unparse_tokens(tokens);
170 if self.zero_column_mask_desc.is_some() { tokens.push(PtxToken::Comma); }
171 if let Some(opt_5) = self.zero_column_mask_desc.as_ref() {
172 opt_5.unparse_tokens(tokens);
173 }
174 tokens.push(PtxToken::Semicolon);
175 }
176 }
177
178}
179