ptx_parser/unparser/instruction/
cp_reduce_async_bulk_tensor.rs1#![allow(unused)]
13
14use crate::lexer::PtxToken;
15use crate::unparser::{PtxUnparser, common::*};
16
17pub mod section_0 {
18 use super::*;
19 use crate::r#type::instruction::cp_reduce_async_bulk_tensor::section_0::*;
20
21 impl PtxUnparser
22 for CpReduceAsyncBulkTensorDimDstSrcRedopLoadModeCompletionMechanismLevelCacheHint
23 {
24 fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
25 self.unparse_tokens_mode(tokens, false);
26 }
27 fn unparse_tokens_mode(&self, tokens: &mut ::std::vec::Vec<PtxToken>, spaced: bool) {
28 push_opcode(tokens, "cp");
29 push_directive(tokens, "reduce");
30 push_directive(tokens, "async");
31 push_directive(tokens, "bulk");
32 push_directive(tokens, "tensor");
33 match &self.dim {
34 Dim::_1d => {
35 push_directive(tokens, "1d");
36 }
37 Dim::_2d => {
38 push_directive(tokens, "2d");
39 }
40 Dim::_3d => {
41 push_directive(tokens, "3d");
42 }
43 Dim::_4d => {
44 push_directive(tokens, "4d");
45 }
46 Dim::_5d => {
47 push_directive(tokens, "5d");
48 }
49 }
50 match &self.dst {
51 Dst::Global => {
52 push_directive(tokens, "global");
53 }
54 }
55 match &self.src {
56 Src::SharedCta => {
57 push_directive(tokens, "shared::cta");
58 }
59 }
60 match &self.redop {
61 Redop::Add => {
62 push_directive(tokens, "add");
63 }
64 Redop::Min => {
65 push_directive(tokens, "min");
66 }
67 Redop::Max => {
68 push_directive(tokens, "max");
69 }
70 Redop::Inc => {
71 push_directive(tokens, "inc");
72 }
73 Redop::Dec => {
74 push_directive(tokens, "dec");
75 }
76 Redop::And => {
77 push_directive(tokens, "and");
78 }
79 Redop::Xor => {
80 push_directive(tokens, "xor");
81 }
82 Redop::Or => {
83 push_directive(tokens, "or");
84 }
85 }
86 if let Some(load_mode_0) = self.load_mode.as_ref() {
87 match load_mode_0 {
88 LoadMode::Im2colNoOffs => {
89 push_directive(tokens, "im2col_no_offs");
90 }
91 LoadMode::Tile => {
92 push_directive(tokens, "tile");
93 }
94 }
95 }
96 match &self.completion_mechanism {
97 CompletionMechanism::BulkGroup => {
98 push_directive(tokens, "bulk_group");
99 }
100 }
101 if self.level_cache_hint {
102 push_directive(tokens, "level::cache_hint");
103 }
104 if spaced {
105 tokens.push(PtxToken::Space);
106 }
107 self.tensormap.unparse_tokens_mode(tokens, spaced);
108 tokens.push(PtxToken::Comma);
109 if spaced {
110 tokens.push(PtxToken::Space);
111 }
112 self.srcmem.unparse_tokens_mode(tokens, spaced);
113 if self.cache_policy.is_some() {
114 tokens.push(PtxToken::Comma);
115 }
116 if let Some(opt_1) = self.cache_policy.as_ref() {
117 if spaced {
118 tokens.push(PtxToken::Space);
119 }
120 opt_1.unparse_tokens_mode(tokens, spaced);
121 }
122 tokens.push(PtxToken::Semicolon);
123 if spaced {
124 tokens.push(PtxToken::Newline);
125 }
126 }
127 }
128}