ptx_parser/unparser/instruction/
mad24.rs

1//! Original PTX specification:
2//!
3//! mad24.mode.type  d, a, b, c;
4//! mad24.hi.sat.s32 d, a, b, c;
5//! .mode = { .hi, .lo };
6//! .type = { .u32, .s32 };
7
8#![allow(unused)]
9
10use crate::lexer::PtxToken;
11use crate::unparser::{PtxUnparser, common::*};
12
13pub mod section_0 {
14    use super::*;
15    use crate::r#type::instruction::mad24::section_0::*;
16
17    impl PtxUnparser for Mad24ModeType {
18        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
19            push_opcode(tokens, "mad24");
20            match &self.mode {
21                Mode::Hi => {
22                    push_directive(tokens, "hi");
23                }
24                Mode::Lo => {
25                    push_directive(tokens, "lo");
26                }
27            }
28            match &self.type_ {
29                Type::U32 => {
30                    push_directive(tokens, "u32");
31                }
32                Type::S32 => {
33                    push_directive(tokens, "s32");
34                }
35            }
36            self.d.unparse_tokens(tokens);
37            tokens.push(PtxToken::Comma);
38            self.a.unparse_tokens(tokens);
39            tokens.push(PtxToken::Comma);
40            self.b.unparse_tokens(tokens);
41            tokens.push(PtxToken::Comma);
42            self.c.unparse_tokens(tokens);
43            tokens.push(PtxToken::Semicolon);
44        }
45    }
46
47    impl PtxUnparser for Mad24HiSatS32 {
48        fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
49            push_opcode(tokens, "mad24");
50            push_directive(tokens, "hi");
51            push_directive(tokens, "sat");
52            push_directive(tokens, "s32");
53            self.d.unparse_tokens(tokens);
54            tokens.push(PtxToken::Comma);
55            self.a.unparse_tokens(tokens);
56            tokens.push(PtxToken::Comma);
57            self.b.unparse_tokens(tokens);
58            tokens.push(PtxToken::Comma);
59            self.c.unparse_tokens(tokens);
60            tokens.push(PtxToken::Semicolon);
61        }
62    }
63}