#![allow(unused)]
use crate::lexer::PtxToken;
use crate::unparser::{PtxUnparser, common::*};
pub mod section_0 {
use super::*;
use crate::r#type::instruction::tcgen05_st::section_0::*;
impl PtxUnparser for Tcgen05StSyncAlignedShape1NumUnpackB32 {
fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
self.unparse_tokens_mode(tokens, false);
}
fn unparse_tokens_mode(&self, tokens: &mut ::std::vec::Vec<PtxToken>, spaced: bool) {
push_opcode(tokens, "tcgen05");
push_directive(tokens, "st");
push_directive(tokens, "sync");
push_directive(tokens, "aligned");
match &self.shape1 {
Shape1::_16x128b => {
push_directive(tokens, "16x128b");
}
Shape1::_16x256b => {
push_directive(tokens, "16x256b");
}
Shape1::_16x64b => {
push_directive(tokens, "16x64b");
}
Shape1::_32x32b => {
push_directive(tokens, "32x32b");
}
}
match &self.num {
Num::X128 => {
push_directive(tokens, "x128");
}
Num::X16 => {
push_directive(tokens, "x16");
}
Num::X32 => {
push_directive(tokens, "x32");
}
Num::X64 => {
push_directive(tokens, "x64");
}
Num::X1 => {
push_directive(tokens, "x1");
}
Num::X2 => {
push_directive(tokens, "x2");
}
Num::X4 => {
push_directive(tokens, "x4");
}
Num::X8 => {
push_directive(tokens, "x8");
}
}
if let Some(unpack_0) = self.unpack.as_ref() {
match unpack_0 {
Unpack::Unpack16b => {
push_directive(tokens, "unpack::16b");
}
}
}
push_directive(tokens, "b32");
if spaced {
tokens.push(PtxToken::Space);
}
self.taddr.unparse_tokens_mode(tokens, spaced);
tokens.push(PtxToken::Comma);
if spaced {
tokens.push(PtxToken::Space);
}
self.r.unparse_tokens_mode(tokens, spaced);
tokens.push(PtxToken::Semicolon);
if spaced {
tokens.push(PtxToken::Newline);
}
}
}
impl PtxUnparser for Tcgen05StSyncAlignedShape2NumUnpackB32 {
fn unparse_tokens(&self, tokens: &mut ::std::vec::Vec<PtxToken>) {
self.unparse_tokens_mode(tokens, false);
}
fn unparse_tokens_mode(&self, tokens: &mut ::std::vec::Vec<PtxToken>, spaced: bool) {
push_opcode(tokens, "tcgen05");
push_directive(tokens, "st");
push_directive(tokens, "sync");
push_directive(tokens, "aligned");
match &self.shape2 {
Shape2::_16x32bx2 => {
push_directive(tokens, "16x32bx2");
}
}
match &self.num {
Num::X128 => {
push_directive(tokens, "x128");
}
Num::X16 => {
push_directive(tokens, "x16");
}
Num::X32 => {
push_directive(tokens, "x32");
}
Num::X64 => {
push_directive(tokens, "x64");
}
Num::X1 => {
push_directive(tokens, "x1");
}
Num::X2 => {
push_directive(tokens, "x2");
}
Num::X4 => {
push_directive(tokens, "x4");
}
Num::X8 => {
push_directive(tokens, "x8");
}
}
if let Some(unpack_1) = self.unpack.as_ref() {
match unpack_1 {
Unpack::Unpack16b => {
push_directive(tokens, "unpack::16b");
}
}
}
push_directive(tokens, "b32");
if spaced {
tokens.push(PtxToken::Space);
}
self.taddr.unparse_tokens_mode(tokens, spaced);
tokens.push(PtxToken::Comma);
if spaced {
tokens.push(PtxToken::Space);
}
self.immhalfsplitoff.unparse_tokens_mode(tokens, spaced);
tokens.push(PtxToken::Comma);
if spaced {
tokens.push(PtxToken::Space);
}
self.r.unparse_tokens_mode(tokens, spaced);
tokens.push(PtxToken::Semicolon);
if spaced {
tokens.push(PtxToken::Newline);
}
}
}
}