ptx_parser/parser/instruction/
movmatrix.rs1#![allow(unused)]
8
9use crate::lexer::PtxToken;
10use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
11use crate::r#type::common::*;
12
13pub mod section_0 {
14 use super::*;
15 use crate::r#type::instruction::movmatrix::section_0::*;
16
17 impl PtxParser for Shape {
22 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
23 {
25 let saved_pos = stream.position();
26 if stream.expect_string(".m8n8").is_ok() {
27 return Ok(Shape::M8n8);
28 }
29 stream.set_position(saved_pos);
30 }
31 let span = stream
32 .peek()
33 .map(|(_, s)| s.clone())
34 .unwrap_or(Span { start: 0, end: 0 });
35 let expected = &[".m8n8"];
36 let found = stream
37 .peek()
38 .map(|(t, _)| format!("{:?}", t))
39 .unwrap_or_else(|_| "<end of input>".to_string());
40 Err(crate::parser::unexpected_value(span, expected, found))
41 }
42 }
43
44 impl PtxParser for Type {
45 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
46 {
48 let saved_pos = stream.position();
49 if stream.expect_string(".b16").is_ok() {
50 return Ok(Type::B16);
51 }
52 stream.set_position(saved_pos);
53 }
54 let span = stream
55 .peek()
56 .map(|(_, s)| s.clone())
57 .unwrap_or(Span { start: 0, end: 0 });
58 let expected = &[".b16"];
59 let found = stream
60 .peek()
61 .map(|(t, _)| format!("{:?}", t))
62 .unwrap_or_else(|_| "<end of input>".to_string());
63 Err(crate::parser::unexpected_value(span, expected, found))
64 }
65 }
66
67 impl PtxParser for MovmatrixSyncAlignedShapeTransType {
68 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
69 stream.expect_string("movmatrix")?;
70 stream.expect_string(".sync")?;
71 let sync = ();
72 stream.expect_complete()?;
73 stream.expect_string(".aligned")?;
74 let aligned = ();
75 stream.expect_complete()?;
76 let shape = Shape::parse(stream)?;
77 stream.expect_complete()?;
78 stream.expect_string(".trans")?;
79 let trans = ();
80 stream.expect_complete()?;
81 let type_ = Type::parse(stream)?;
82 stream.expect_complete()?;
83 let d = GeneralOperand::parse(stream)?;
84 stream.expect_complete()?;
85 stream.expect(&PtxToken::Comma)?;
86 let a = GeneralOperand::parse(stream)?;
87 stream.expect_complete()?;
88 stream.expect_complete()?;
89 stream.expect(&PtxToken::Semicolon)?;
90 Ok(MovmatrixSyncAlignedShapeTransType {
91 sync,
92 aligned,
93 shape,
94 trans,
95 type_,
96 d,
97 a,
98 })
99 }
100 }
101}