ptx_parser/parser/instruction/
tcgen05_alloc.rs1#![allow(unused)]
9
10use crate::lexer::PtxToken;
11use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
12use crate::r#type::common::*;
13
14pub mod section_0 {
15 use super::*;
16 use crate::r#type::instruction::tcgen05_alloc::section_0::*;
17
18 impl PtxParser for CtaGroup {
23 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
24 {
26 let saved_pos = stream.position();
27 if stream.expect_string(".cta_group::1").is_ok() {
28 return Ok(CtaGroup::CtaGroup1);
29 }
30 stream.set_position(saved_pos);
31 }
32 let saved_pos = stream.position();
33 {
35 let saved_pos = stream.position();
36 if stream.expect_string(".cta_group::2").is_ok() {
37 return Ok(CtaGroup::CtaGroup2);
38 }
39 stream.set_position(saved_pos);
40 }
41 stream.set_position(saved_pos);
42 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
43 let expected = &[".cta_group::1", ".cta_group::2"];
44 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
45 Err(crate::parser::unexpected_value(span, expected, found))
46 }
47 }
48
49 impl PtxParser for Tcgen05AllocCtaGroupSyncAlignedSharedCtaB32 {
50 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
51 stream.expect_string("tcgen05")?;
52 stream.expect_string(".alloc")?;
53 let alloc = ();
54 stream.expect_complete()?;
55 let cta_group = CtaGroup::parse(stream)?;
56 stream.expect_complete()?;
57 stream.expect_string(".sync")?;
58 let sync = ();
59 stream.expect_complete()?;
60 stream.expect_string(".aligned")?;
61 let aligned = ();
62 stream.expect_complete()?;
63 let saved_pos = stream.position();
64 let shared_cta = stream.expect_string(".shared::cta").is_ok();
65 if !shared_cta {
66 stream.set_position(saved_pos);
67 }
68 stream.expect_complete()?;
69 stream.expect_string(".b32")?;
70 let b32 = ();
71 stream.expect_complete()?;
72 let dst = AddressOperand::parse(stream)?;
73 stream.expect_complete()?;
74 stream.expect(&PtxToken::Comma)?;
75 let ncols = GeneralOperand::parse(stream)?;
76 stream.expect_complete()?;
77 stream.expect_complete()?;
78 stream.expect(&PtxToken::Semicolon)?;
79 Ok(Tcgen05AllocCtaGroupSyncAlignedSharedCtaB32 {
80 alloc,
81 cta_group,
82 sync,
83 aligned,
84 shared_cta,
85 b32,
86 dst,
87 ncols,
88 })
89 }
90 }
91
92
93 impl PtxParser for Tcgen05DeallocCtaGroupSyncAlignedB32 {
94 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
95 stream.expect_string("tcgen05")?;
96 stream.expect_string(".dealloc")?;
97 let dealloc = ();
98 stream.expect_complete()?;
99 let cta_group = CtaGroup::parse(stream)?;
100 stream.expect_complete()?;
101 stream.expect_string(".sync")?;
102 let sync = ();
103 stream.expect_complete()?;
104 stream.expect_string(".aligned")?;
105 let aligned = ();
106 stream.expect_complete()?;
107 stream.expect_string(".b32")?;
108 let b32 = ();
109 stream.expect_complete()?;
110 let taddr = GeneralOperand::parse(stream)?;
111 stream.expect_complete()?;
112 stream.expect(&PtxToken::Comma)?;
113 let ncols = GeneralOperand::parse(stream)?;
114 stream.expect_complete()?;
115 stream.expect_complete()?;
116 stream.expect(&PtxToken::Semicolon)?;
117 Ok(Tcgen05DeallocCtaGroupSyncAlignedB32 {
118 dealloc,
119 cta_group,
120 sync,
121 aligned,
122 b32,
123 taddr,
124 ncols,
125 })
126 }
127 }
128
129
130 impl PtxParser for Tcgen05RelinquishAllocPermitCtaGroupSyncAligned {
131 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
132 stream.expect_string("tcgen05")?;
133 stream.expect_string(".relinquish_alloc_permit")?;
134 let relinquish_alloc_permit = ();
135 stream.expect_complete()?;
136 let cta_group = CtaGroup::parse(stream)?;
137 stream.expect_complete()?;
138 stream.expect_string(".sync")?;
139 let sync = ();
140 stream.expect_complete()?;
141 stream.expect_string(".aligned")?;
142 let aligned = ();
143 stream.expect_complete()?;
144 stream.expect_complete()?;
145 stream.expect(&PtxToken::Semicolon)?;
146 Ok(Tcgen05RelinquishAllocPermitCtaGroupSyncAligned {
147 relinquish_alloc_permit,
148 cta_group,
149 sync,
150 aligned,
151 })
152 }
153 }
154
155
156}
157