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.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
32 let expected = &[".m8n8"];
33 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
34 Err(crate::parser::unexpected_value(span, expected, found))
35 }
36 }
37
38 impl PtxParser for Type {
39 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
40 {
42 let saved_pos = stream.position();
43 if stream.expect_string(".b16").is_ok() {
44 return Ok(Type::B16);
45 }
46 stream.set_position(saved_pos);
47 }
48 let span = stream.peek().map(|(_, s)| s.clone()).unwrap_or(Span { start: 0, end: 0 });
49 let expected = &[".b16"];
50 let found = stream.peek().map(|(t, _)| format!("{:?}", t)).unwrap_or_else(|_| "<end of input>".to_string());
51 Err(crate::parser::unexpected_value(span, expected, found))
52 }
53 }
54
55 impl PtxParser for MovmatrixSyncAlignedShapeTransType {
56 fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
57 stream.expect_string("movmatrix")?;
58 stream.expect_string(".sync")?;
59 let sync = ();
60 stream.expect_complete()?;
61 stream.expect_string(".aligned")?;
62 let aligned = ();
63 stream.expect_complete()?;
64 let shape = Shape::parse(stream)?;
65 stream.expect_complete()?;
66 stream.expect_string(".trans")?;
67 let trans = ();
68 stream.expect_complete()?;
69 let type_ = Type::parse(stream)?;
70 stream.expect_complete()?;
71 let d = GeneralOperand::parse(stream)?;
72 stream.expect_complete()?;
73 stream.expect(&PtxToken::Comma)?;
74 let a = GeneralOperand::parse(stream)?;
75 stream.expect_complete()?;
76 stream.expect_complete()?;
77 stream.expect(&PtxToken::Semicolon)?;
78 Ok(MovmatrixSyncAlignedShapeTransType {
79 sync,
80 aligned,
81 shape,
82 trans,
83 type_,
84 d,
85 a,
86 })
87 }
88 }
89
90
91}
92