ptx_parser/unparser/instruction/
max.rs1#![allow(unused)]
19
20use crate::lexer::PtxToken;
21use crate::unparser::{PtxUnparser, common::*};
22
23pub mod section_0 {
24 use super::*;
25 use crate::r#type::instruction::max::section_0::*;
26
27 impl PtxUnparser for MaxAtype {
28 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
29 push_opcode(tokens, "max");
30 match &self.atype {
31 Atype::U16x2 => {
32 push_directive(tokens, "u16x2");
33 }
34 Atype::U16 => {
35 push_directive(tokens, "u16");
36 }
37 Atype::U32 => {
38 push_directive(tokens, "u32");
39 }
40 Atype::U64 => {
41 push_directive(tokens, "u64");
42 }
43 Atype::S16 => {
44 push_directive(tokens, "s16");
45 }
46 Atype::S64 => {
47 push_directive(tokens, "s64");
48 }
49 }
50 self.d.unparse_tokens(tokens);
51 tokens.push(PtxToken::Comma);
52 self.a.unparse_tokens(tokens);
53 tokens.push(PtxToken::Comma);
54 self.b.unparse_tokens(tokens);
55 tokens.push(PtxToken::Semicolon);
56 }
57 }
58
59 impl PtxUnparser for MaxReluBtype {
60 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
61 push_opcode(tokens, "max");
62 if self.relu {
63 push_directive(tokens, "relu");
64 }
65 match &self.btype {
66 Btype::S16x2 => {
67 push_directive(tokens, "s16x2");
68 }
69 Btype::S32 => {
70 push_directive(tokens, "s32");
71 }
72 }
73 self.d.unparse_tokens(tokens);
74 tokens.push(PtxToken::Comma);
75 self.a.unparse_tokens(tokens);
76 tokens.push(PtxToken::Comma);
77 self.b.unparse_tokens(tokens);
78 tokens.push(PtxToken::Semicolon);
79 }
80 }
81
82 impl PtxUnparser for MaxFtzNanXorsignAbsF32 {
83 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
84 push_opcode(tokens, "max");
85 if self.ftz {
86 push_directive(tokens, "ftz");
87 }
88 if self.nan {
89 push_directive(tokens, "NaN");
90 }
91 if self.xorsign_abs {
92 push_directive(tokens, "xorsign.abs");
93 }
94 push_directive(tokens, "f32");
95 self.d.unparse_tokens(tokens);
96 tokens.push(PtxToken::Comma);
97 self.a.unparse_tokens(tokens);
98 tokens.push(PtxToken::Comma);
99 self.b.unparse_tokens(tokens);
100 tokens.push(PtxToken::Semicolon);
101 }
102 }
103
104 impl PtxUnparser for MaxFtzNanAbsF32 {
105 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
106 push_opcode(tokens, "max");
107 if self.ftz {
108 push_directive(tokens, "ftz");
109 }
110 if self.nan {
111 push_directive(tokens, "NaN");
112 }
113 if self.abs {
114 push_directive(tokens, "abs");
115 }
116 push_directive(tokens, "f32");
117 self.d.unparse_tokens(tokens);
118 tokens.push(PtxToken::Comma);
119 self.a.unparse_tokens(tokens);
120 tokens.push(PtxToken::Comma);
121 self.b.unparse_tokens(tokens);
122 tokens.push(PtxToken::Comma);
123 self.c.unparse_tokens(tokens);
124 tokens.push(PtxToken::Semicolon);
125 }
126 }
127
128 impl PtxUnparser for MaxF64 {
129 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
130 push_opcode(tokens, "max");
131 push_directive(tokens, "f64");
132 self.d.unparse_tokens(tokens);
133 tokens.push(PtxToken::Comma);
134 self.a.unparse_tokens(tokens);
135 tokens.push(PtxToken::Comma);
136 self.b.unparse_tokens(tokens);
137 tokens.push(PtxToken::Semicolon);
138 }
139 }
140
141 impl PtxUnparser for MaxFtzNanXorsignAbsF16 {
142 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
143 push_opcode(tokens, "max");
144 if self.ftz {
145 push_directive(tokens, "ftz");
146 }
147 if self.nan {
148 push_directive(tokens, "NaN");
149 }
150 if self.xorsign_abs {
151 push_directive(tokens, "xorsign.abs");
152 }
153 push_directive(tokens, "f16");
154 self.d.unparse_tokens(tokens);
155 tokens.push(PtxToken::Comma);
156 self.a.unparse_tokens(tokens);
157 tokens.push(PtxToken::Comma);
158 self.b.unparse_tokens(tokens);
159 tokens.push(PtxToken::Semicolon);
160 }
161 }
162
163 impl PtxUnparser for MaxFtzNanXorsignAbsF16x2 {
164 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
165 push_opcode(tokens, "max");
166 if self.ftz {
167 push_directive(tokens, "ftz");
168 }
169 if self.nan {
170 push_directive(tokens, "NaN");
171 }
172 if self.xorsign_abs {
173 push_directive(tokens, "xorsign.abs");
174 }
175 push_directive(tokens, "f16x2");
176 self.d.unparse_tokens(tokens);
177 tokens.push(PtxToken::Comma);
178 self.a.unparse_tokens(tokens);
179 tokens.push(PtxToken::Comma);
180 self.b.unparse_tokens(tokens);
181 tokens.push(PtxToken::Semicolon);
182 }
183 }
184
185 impl PtxUnparser for MaxNanXorsignAbsBf16 {
186 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
187 push_opcode(tokens, "max");
188 if self.nan {
189 push_directive(tokens, "NaN");
190 }
191 if self.xorsign_abs {
192 push_directive(tokens, "xorsign.abs");
193 }
194 push_directive(tokens, "bf16");
195 self.d.unparse_tokens(tokens);
196 tokens.push(PtxToken::Comma);
197 self.a.unparse_tokens(tokens);
198 tokens.push(PtxToken::Comma);
199 self.b.unparse_tokens(tokens);
200 tokens.push(PtxToken::Semicolon);
201 }
202 }
203
204 impl PtxUnparser for MaxNanXorsignAbsBf16x2 {
205 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
206 push_opcode(tokens, "max");
207 if self.nan {
208 push_directive(tokens, "NaN");
209 }
210 if self.xorsign_abs {
211 push_directive(tokens, "xorsign.abs");
212 }
213 push_directive(tokens, "bf16x2");
214 self.d.unparse_tokens(tokens);
215 tokens.push(PtxToken::Comma);
216 self.a.unparse_tokens(tokens);
217 tokens.push(PtxToken::Comma);
218 self.b.unparse_tokens(tokens);
219 tokens.push(PtxToken::Semicolon);
220 }
221 }
222}