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() {
58 tokens.push(PtxToken::Comma);
59 }
60 if let Some(opt_0) = self.zero_column_mask_desc.as_ref() {
61 opt_0.unparse_tokens(tokens);
62 }
63 tokens.push(PtxToken::Semicolon);
64 }
65 }
66
67 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindCollectorUsage1 {
68 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
69 push_opcode(tokens, "tcgen05");
70 push_directive(tokens, "mma");
71 push_directive(tokens, "ws");
72 push_directive(tokens, "cta_group::1");
73 match &self.kind {
74 Kind::KindF8f6f4 => {
75 push_directive(tokens, "kind::f8f6f4");
76 }
77 Kind::KindTf32 => {
78 push_directive(tokens, "kind::tf32");
79 }
80 Kind::KindF16 => {
81 push_directive(tokens, "kind::f16");
82 }
83 }
84 if self.collector_usage {
85 push_directive(tokens, "collector_usage");
86 }
87 self.d_tmem.unparse_tokens(tokens);
88 tokens.push(PtxToken::Comma);
89 self.a_tmem.unparse_tokens(tokens);
90 tokens.push(PtxToken::Comma);
91 self.b_desc.unparse_tokens(tokens);
92 tokens.push(PtxToken::Comma);
93 self.idesc.unparse_tokens(tokens);
94 tokens.push(PtxToken::Comma);
95 self.enable_input_d.unparse_tokens(tokens);
96 if self.zero_column_mask_desc.is_some() {
97 tokens.push(PtxToken::Comma);
98 }
99 if let Some(opt_1) = self.zero_column_mask_desc.as_ref() {
100 opt_1.unparse_tokens(tokens);
101 }
102 tokens.push(PtxToken::Semicolon);
103 }
104 }
105}
106
107pub mod section_1 {
108 use super::*;
109 use crate::r#type::instruction::tcgen05_mma_ws::section_1::*;
110
111 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindI8CollectorUsage {
112 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
113 push_opcode(tokens, "tcgen05");
114 push_directive(tokens, "mma");
115 push_directive(tokens, "ws");
116 push_directive(tokens, "cta_group::1");
117 push_directive(tokens, "kind::i8");
118 if let Some(collector_usage_2) = self.collector_usage.as_ref() {
119 match collector_usage_2 {
120 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
121 let mut combined = String::new();
122 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
123 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
124 tokens.push(PtxToken::Dot);
125 tokens.push(PtxToken::Identifier(
126 format!("{}{}", "collector", combined).into(),
127 ));
128 }
129 }
130 }
131 self.d_tmem.unparse_tokens(tokens);
132 tokens.push(PtxToken::Comma);
133 self.a_desc.unparse_tokens(tokens);
134 tokens.push(PtxToken::Comma);
135 self.b_desc.unparse_tokens(tokens);
136 tokens.push(PtxToken::Comma);
137 self.idesc.unparse_tokens(tokens);
138 tokens.push(PtxToken::Comma);
139 self.enable_input_d.unparse_tokens(tokens);
140 if self.zero_column_mask_desc.is_some() {
141 tokens.push(PtxToken::Comma);
142 }
143 if let Some(opt_3) = self.zero_column_mask_desc.as_ref() {
144 opt_3.unparse_tokens(tokens);
145 }
146 tokens.push(PtxToken::Semicolon);
147 }
148 }
149
150 impl PtxUnparser for Tcgen05MmaWsCtaGroup1KindI8CollectorUsage1 {
151 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
152 push_opcode(tokens, "tcgen05");
153 push_directive(tokens, "mma");
154 push_directive(tokens, "ws");
155 push_directive(tokens, "cta_group::1");
156 push_directive(tokens, "kind::i8");
157 if let Some(collector_usage_4) = self.collector_usage.as_ref() {
158 match collector_usage_4 {
159 CollectorUsage::CollectorBufferOp(_, n1, n2) => {
160 let mut combined = String::new();
161 combined.push_str(format!("{:?}", n1).trim_start_matches('_'));
162 combined.push_str(format!("{:?}", n2).trim_start_matches('_'));
163 tokens.push(PtxToken::Dot);
164 tokens.push(PtxToken::Identifier(
165 format!("{}{}", "collector", combined).into(),
166 ));
167 }
168 }
169 }
170 self.d_tmem.unparse_tokens(tokens);
171 tokens.push(PtxToken::Comma);
172 self.a_tmem.unparse_tokens(tokens);
173 tokens.push(PtxToken::Comma);
174 self.b_desc.unparse_tokens(tokens);
175 tokens.push(PtxToken::Comma);
176 self.idesc.unparse_tokens(tokens);
177 tokens.push(PtxToken::Comma);
178 self.enable_input_d.unparse_tokens(tokens);
179 if self.zero_column_mask_desc.is_some() {
180 tokens.push(PtxToken::Comma);
181 }
182 if let Some(opt_5) = self.zero_column_mask_desc.as_ref() {
183 opt_5.unparse_tokens(tokens);
184 }
185 tokens.push(PtxToken::Semicolon);
186 }
187 }
188}