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 push_opcode(tokens, "cp");
26 push_directive(tokens, "reduce");
27 push_directive(tokens, "async");
28 push_directive(tokens, "bulk");
29 push_directive(tokens, "tensor");
30 match &self.dim {
31 Dim::_1d => {
32 push_directive(tokens, "1d");
33 }
34 Dim::_2d => {
35 push_directive(tokens, "2d");
36 }
37 Dim::_3d => {
38 push_directive(tokens, "3d");
39 }
40 Dim::_4d => {
41 push_directive(tokens, "4d");
42 }
43 Dim::_5d => {
44 push_directive(tokens, "5d");
45 }
46 }
47 match &self.dst {
48 Dst::Global => {
49 push_directive(tokens, "global");
50 }
51 }
52 match &self.src {
53 Src::SharedCta => {
54 push_directive(tokens, "shared::cta");
55 }
56 }
57 match &self.redop {
58 Redop::Add => {
59 push_directive(tokens, "add");
60 }
61 Redop::Min => {
62 push_directive(tokens, "min");
63 }
64 Redop::Max => {
65 push_directive(tokens, "max");
66 }
67 Redop::Inc => {
68 push_directive(tokens, "inc");
69 }
70 Redop::Dec => {
71 push_directive(tokens, "dec");
72 }
73 Redop::And => {
74 push_directive(tokens, "and");
75 }
76 Redop::Xor => {
77 push_directive(tokens, "xor");
78 }
79 Redop::Or => {
80 push_directive(tokens, "or");
81 }
82 }
83 if let Some(load_mode_0) = self.load_mode.as_ref() {
84 match load_mode_0 {
85 LoadMode::Im2colNoOffs => {
86 push_directive(tokens, "im2col_no_offs");
87 }
88 LoadMode::Tile => {
89 push_directive(tokens, "tile");
90 }
91 }
92 }
93 match &self.completion_mechanism {
94 CompletionMechanism::BulkGroup => {
95 push_directive(tokens, "bulk_group");
96 }
97 }
98 if self.level_cache_hint {
99 push_directive(tokens, "level::cache_hint");
100 }
101 self.tensormap.unparse_tokens(tokens);
102 tokens.push(PtxToken::Comma);
103 self.srcmem.unparse_tokens(tokens);
104 if self.cache_policy.is_some() {
105 tokens.push(PtxToken::Comma);
106 }
107 if let Some(opt_1) = self.cache_policy.as_ref() {
108 opt_1.unparse_tokens(tokens);
109 }
110 tokens.push(PtxToken::Semicolon);
111 }
112 }
113}