ptx_parser/unparser/instruction/
div.rs1#![allow(unused)]
14
15use crate::lexer::PtxToken;
16use crate::unparser::{PtxUnparser, common::*};
17
18pub mod section_0 {
19 use super::*;
20 use crate::r#type::instruction::div::section_0::*;
21
22 impl PtxUnparser for DivType {
23 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
24 push_opcode(tokens, "div");
25 match &self.type_ {
26 Type::U16 => {
27 push_directive(tokens, "u16");
28 }
29 Type::U32 => {
30 push_directive(tokens, "u32");
31 }
32 Type::U64 => {
33 push_directive(tokens, "u64");
34 }
35 Type::S16 => {
36 push_directive(tokens, "s16");
37 }
38 Type::S32 => {
39 push_directive(tokens, "s32");
40 }
41 Type::S64 => {
42 push_directive(tokens, "s64");
43 }
44 }
45 self.d.unparse_tokens(tokens);
46 tokens.push(PtxToken::Comma);
47 self.a.unparse_tokens(tokens);
48 tokens.push(PtxToken::Comma);
49 self.b.unparse_tokens(tokens);
50 tokens.push(PtxToken::Semicolon);
51 }
52 }
53
54 impl PtxUnparser for DivApproxFtzF32 {
55 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
56 push_opcode(tokens, "div");
57 push_directive(tokens, "approx");
58 if self.ftz {
59 push_directive(tokens, "ftz");
60 }
61 push_directive(tokens, "f32");
62 self.d.unparse_tokens(tokens);
63 tokens.push(PtxToken::Comma);
64 self.a.unparse_tokens(tokens);
65 tokens.push(PtxToken::Comma);
66 self.b.unparse_tokens(tokens);
67 tokens.push(PtxToken::Semicolon);
68 }
69 }
70
71 impl PtxUnparser for DivFullFtzF32 {
72 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
73 push_opcode(tokens, "div");
74 push_directive(tokens, "full");
75 if self.ftz {
76 push_directive(tokens, "ftz");
77 }
78 push_directive(tokens, "f32");
79 self.d.unparse_tokens(tokens);
80 tokens.push(PtxToken::Comma);
81 self.a.unparse_tokens(tokens);
82 tokens.push(PtxToken::Comma);
83 self.b.unparse_tokens(tokens);
84 tokens.push(PtxToken::Semicolon);
85 }
86 }
87
88 impl PtxUnparser for DivRndFtzF32 {
89 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
90 push_opcode(tokens, "div");
91 match &self.rnd {
92 Rnd::Rn => {
93 push_directive(tokens, "rn");
94 }
95 Rnd::Rz => {
96 push_directive(tokens, "rz");
97 }
98 Rnd::Rm => {
99 push_directive(tokens, "rm");
100 }
101 Rnd::Rp => {
102 push_directive(tokens, "rp");
103 }
104 }
105 if self.ftz {
106 push_directive(tokens, "ftz");
107 }
108 push_directive(tokens, "f32");
109 self.d.unparse_tokens(tokens);
110 tokens.push(PtxToken::Comma);
111 self.a.unparse_tokens(tokens);
112 tokens.push(PtxToken::Comma);
113 self.b.unparse_tokens(tokens);
114 tokens.push(PtxToken::Semicolon);
115 }
116 }
117
118 impl PtxUnparser for DivRndF64 {
119 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
120 push_opcode(tokens, "div");
121 match &self.rnd {
122 Rnd::Rn => {
123 push_directive(tokens, "rn");
124 }
125 Rnd::Rz => {
126 push_directive(tokens, "rz");
127 }
128 Rnd::Rm => {
129 push_directive(tokens, "rm");
130 }
131 Rnd::Rp => {
132 push_directive(tokens, "rp");
133 }
134 }
135 push_directive(tokens, "f64");
136 self.d.unparse_tokens(tokens);
137 tokens.push(PtxToken::Comma);
138 self.a.unparse_tokens(tokens);
139 tokens.push(PtxToken::Comma);
140 self.b.unparse_tokens(tokens);
141 tokens.push(PtxToken::Semicolon);
142 }
143 }
144
145}
146