ptx_parser/unparser/instruction/
sured.rs1#![allow(unused)]
16
17use crate::lexer::PtxToken;
18use crate::unparser::{PtxUnparser, common::*};
19
20pub mod section_0 {
21 use super::*;
22 use crate::r#type::instruction::sured::section_0::*;
23
24 impl PtxUnparser for SuredBOpGeomCtypeMode {
25 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
26 self.unparse_tokens_mode(tokens, false);
27 }
28 fn unparse_tokens_mode(&self, tokens: &mut ::std::vec::Vec<PtxToken>, spaced: bool) {
29 push_opcode(tokens, "sured");
30 push_directive(tokens, "b");
31 match &self.op {
32 Op::Add => {
33 push_directive(tokens, "add");
34 }
35 Op::Min => {
36 push_directive(tokens, "min");
37 }
38 Op::Max => {
39 push_directive(tokens, "max");
40 }
41 Op::And => {
42 push_directive(tokens, "and");
43 }
44 Op::Or => {
45 push_directive(tokens, "or");
46 }
47 }
48 match &self.geom {
49 Geom::_1d => {
50 push_directive(tokens, "1d");
51 }
52 Geom::_2d => {
53 push_directive(tokens, "2d");
54 }
55 Geom::_3d => {
56 push_directive(tokens, "3d");
57 }
58 }
59 match &self.ctype {
60 Ctype::U32 => {
61 push_directive(tokens, "u32");
62 }
63 Ctype::U64 => {
64 push_directive(tokens, "u64");
65 }
66 Ctype::S32 => {
67 push_directive(tokens, "s32");
68 }
69 Ctype::B32 => {
70 push_directive(tokens, "b32");
71 }
72 Ctype::S64 => {
73 push_directive(tokens, "s64");
74 }
75 }
76 match &self.mode {
77 Mode::Clamp => {
78 push_directive(tokens, "clamp");
79 }
80 Mode::Trap => {
81 push_directive(tokens, "trap");
82 }
83 Mode::Zero => {
84 push_directive(tokens, "zero");
85 }
86 }
87 if spaced {
88 tokens.push(PtxToken::Space);
89 }
90 self.a.unparse_tokens_mode(tokens, spaced);
91 tokens.push(PtxToken::Comma);
92 if spaced {
93 tokens.push(PtxToken::Space);
94 }
95 self.c.unparse_tokens_mode(tokens, spaced);
96 tokens.push(PtxToken::Semicolon);
97 if spaced {
98 tokens.push(PtxToken::Newline);
99 }
100 }
101 }
102}
103
104pub mod section_1 {
105 use super::*;
106 use crate::r#type::instruction::sured::section_1::*;
107
108 impl PtxUnparser for SuredPOpGeomCtypeMode {
109 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
110 self.unparse_tokens_mode(tokens, false);
111 }
112 fn unparse_tokens_mode(&self, tokens: &mut ::std::vec::Vec<PtxToken>, spaced: bool) {
113 push_opcode(tokens, "sured");
114 push_directive(tokens, "p");
115 match &self.op {
116 Op::Add => {
117 push_directive(tokens, "add");
118 }
119 Op::Min => {
120 push_directive(tokens, "min");
121 }
122 Op::Max => {
123 push_directive(tokens, "max");
124 }
125 Op::And => {
126 push_directive(tokens, "and");
127 }
128 Op::Or => {
129 push_directive(tokens, "or");
130 }
131 }
132 match &self.geom {
133 Geom::_1d => {
134 push_directive(tokens, "1d");
135 }
136 Geom::_2d => {
137 push_directive(tokens, "2d");
138 }
139 Geom::_3d => {
140 push_directive(tokens, "3d");
141 }
142 }
143 match &self.ctype {
144 Ctype::B32 => {
145 push_directive(tokens, "b32");
146 }
147 Ctype::B64 => {
148 push_directive(tokens, "b64");
149 }
150 }
151 match &self.mode {
152 Mode::Clamp => {
153 push_directive(tokens, "clamp");
154 }
155 Mode::Trap => {
156 push_directive(tokens, "trap");
157 }
158 Mode::Zero => {
159 push_directive(tokens, "zero");
160 }
161 }
162 if spaced {
163 tokens.push(PtxToken::Space);
164 }
165 self.a.unparse_tokens_mode(tokens, spaced);
166 tokens.push(PtxToken::Comma);
167 if spaced {
168 tokens.push(PtxToken::Space);
169 }
170 self.c.unparse_tokens_mode(tokens, spaced);
171 tokens.push(PtxToken::Semicolon);
172 if spaced {
173 tokens.push(PtxToken::Newline);
174 }
175 }
176 }
177}