#![allow(unused)]
use crate::lexer::PtxToken;
use crate::parser::{PtxParseError, PtxParser, PtxTokenStream, Span};
use crate::r#type::common::*;
pub mod section_0 {
use super::*;
use crate::r#type::instruction::mma_sp::section_0::*;
impl PtxParser for Ctype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".f16").is_ok() {
return Ok(Ctype::F16);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".f32").is_ok() {
return Ok(Ctype::F32);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".f16", ".f32"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Dtype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".f16").is_ok() {
return Ok(Dtype::F16);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".f32").is_ok() {
return Ok(Dtype::F32);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".f16", ".f32"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".sp").is_ok() {
return Ok(Spvariant::Sp);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata", ".sp"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k16RowColDtypeF16F16Ctype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k16")?;
let m16n8k16 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let dtype = Dtype::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".f16")?;
let f16 = ();
stream.expect_complete()?;
stream.expect_string(".f16")?;
let f162 = ();
stream.expect_complete()?;
let ctype = Ctype::parse(stream)?;
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k16RowColDtypeF16F16Ctype {
spvariant,
sync,
aligned,
m16n8k16,
row,
col,
dtype,
f16,
f162,
ctype,
d,
a,
b,
c,
e,
f,
})
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k32RowColDtypeF16F16Ctype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k32")?;
let m16n8k32 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let dtype = Dtype::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".f16")?;
let f16 = ();
stream.expect_complete()?;
stream.expect_string(".f16")?;
let f162 = ();
stream.expect_complete()?;
let ctype = Ctype::parse(stream)?;
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k32RowColDtypeF16F16Ctype {
spvariant,
sync,
aligned,
m16n8k32,
row,
col,
dtype,
f16,
f162,
ctype,
d,
a,
b,
c,
e,
f,
})
}
}
}
pub mod section_1 {
use super::*;
use crate::r#type::instruction::mma_sp::section_1::*;
impl PtxParser for Ctype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".f16").is_ok() {
return Ok(Ctype::F16);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".f32").is_ok() {
return Ok(Ctype::F32);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".f16", ".f32"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Dtype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".f16").is_ok() {
return Ok(Dtype::F16);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".f32").is_ok() {
return Ok(Dtype::F32);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".f16", ".f32"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for F8f6f4type {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".e4m3").is_ok() {
return Ok(F8f6f4type::E4m3);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e5m2").is_ok() {
return Ok(F8f6f4type::E5m2);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e3m2").is_ok() {
return Ok(F8f6f4type::E3m2);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e2m3").is_ok() {
return Ok(F8f6f4type::E2m3);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e2m1").is_ok() {
return Ok(F8f6f4type::E2m1);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".e4m3", ".e5m2", ".e3m2", ".e2m3", ".e2m1"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for F8type {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".e4m3").is_ok() {
return Ok(F8type::E4m3);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e5m2").is_ok() {
return Ok(F8type::E5m2);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".e4m3", ".e5m2"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Kind {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".kind::f8f6f4").is_ok() {
return Ok(Kind::KindF8f6f4);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".kind::f8f6f4"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".sp").is_ok() {
return Ok(Spvariant::Sp);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata", ".sp"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k16RowColF32Bf16Bf16F32 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k16")?;
let m16n8k16 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
stream.expect_string(".bf16")?;
let bf16 = ();
stream.expect_complete()?;
stream.expect_string(".bf16")?;
let bf162 = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k16RowColF32Bf16Bf16F32 {
spvariant,
sync,
aligned,
m16n8k16,
row,
col,
f32,
bf16,
bf162,
f322,
d,
a,
b,
c,
e,
f,
})
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k32RowColF32Bf16Bf16F32 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k32")?;
let m16n8k32 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
stream.expect_string(".bf16")?;
let bf16 = ();
stream.expect_complete()?;
stream.expect_string(".bf16")?;
let bf162 = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k32RowColF32Bf16Bf16F32 {
spvariant,
sync,
aligned,
m16n8k32,
row,
col,
f32,
bf16,
bf162,
f322,
d,
a,
b,
c,
e,
f,
})
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k8RowColF32Tf32Tf32F32 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k8")?;
let m16n8k8 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
stream.expect_string(".tf32")?;
let tf32 = ();
stream.expect_complete()?;
stream.expect_string(".tf32")?;
let tf322 = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k8RowColF32Tf32Tf32F32 {
spvariant,
sync,
aligned,
m16n8k8,
row,
col,
f32,
tf32,
tf322,
f322,
d,
a,
b,
c,
e,
f,
})
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k16RowColF32Tf32Tf32F32 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k16")?;
let m16n8k16 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
stream.expect_string(".tf32")?;
let tf32 = ();
stream.expect_complete()?;
stream.expect_string(".tf32")?;
let tf322 = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k16RowColF32Tf32Tf32F32 {
spvariant,
sync,
aligned,
m16n8k16,
row,
col,
f32,
tf32,
tf322,
f322,
d,
a,
b,
c,
e,
f,
})
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k64RowColF32F8typeF8typeF32 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k64")?;
let m16n8k64 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
let f8type = F8type::parse(stream)?;
stream.expect_complete()?;
let f8type1 = F8type::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k64RowColF32F8typeF8typeF32 {
spvariant,
sync,
aligned,
m16n8k64,
row,
col,
f32,
f8type,
f8type1,
f322,
d,
a,
b,
c,
e,
f,
})
}
}
impl PtxParser for MmaSpOrderedMetadataSyncAlignedM16n8k64RowColKindDtypeF8f6f4typeF8f6f4typeCtype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
stream.expect_string(".sp::ordered_metadata")?;
let sp_ordered_metadata = ();
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k64")?;
let m16n8k64 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let kind = Kind::parse(stream)?;
stream.expect_complete()?;
let dtype = Dtype::parse(stream)?;
stream.expect_complete()?;
let f8f6f4type = F8f6f4type::parse(stream)?;
stream.expect_complete()?;
let f8f6f4type1 = F8f6f4type::parse(stream)?;
stream.expect_complete()?;
let ctype = Ctype::parse(stream)?;
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(
MmaSpOrderedMetadataSyncAlignedM16n8k64RowColKindDtypeF8f6f4typeF8f6f4typeCtype {
sp_ordered_metadata,
sync,
aligned,
m16n8k64,
row,
col,
kind,
dtype,
f8f6f4type,
f8f6f4type1,
ctype,
d,
a,
b,
c,
e,
f,
},
)
}
}
}
pub mod section_2 {
use super::*;
use crate::r#type::instruction::mma_sp::section_2::*;
impl PtxParser for Kind {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".kind::mxf4").is_ok() {
return Ok(Kind::KindMxf4);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".kind::mxf4"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for ScaleVecSize {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".scale_vec::2X").is_ok() {
return Ok(ScaleVecSize::ScaleVec2x);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".scale_vec::2X"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Stype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".ue8m0").is_ok() {
return Ok(Stype::Ue8m0);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".ue8m0"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser
for MmaSpvariantSyncAlignedM16n8k128RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype
{
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k128")?;
let m16n8k128 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let kind = Kind::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".block_scale")?;
let block_scale = ();
stream.expect_complete()?;
let saved_pos = stream.position();
let scale_vec_size = match ScaleVecSize::parse(stream) {
Ok(val) => Some(val),
Err(_) => {
stream.set_position(saved_pos);
None
}
};
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
stream.expect_string(".e2m1")?;
let e2m1 = ();
stream.expect_complete()?;
stream.expect_string(".e2m1")?;
let e2m12 = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let stype = Stype::parse(stream)?;
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let scale_a_data = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let byte_id_a = VectorOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let scale_b_data = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let byte_id_b = VectorOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k128RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype {
spvariant,
sync,
aligned,
m16n8k128,
row,
col,
kind,
block_scale,
scale_vec_size,
f32,
e2m1,
e2m12,
f322,
stype,
d,
a,
b,
c,
e,
f,
scale_a_data,
byte_id_a,
scale_b_data,
byte_id_b,
})
}
}
}
pub mod section_3 {
use super::*;
use crate::r#type::instruction::mma_sp::section_3::*;
impl PtxParser for Kind {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".kind::mxf4nvf4").is_ok() {
return Ok(Kind::KindMxf4nvf4);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".kind::mxf4nvf4"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for ScaleVecSize {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".scale_vec::2X").is_ok() {
return Ok(ScaleVecSize::ScaleVec2x);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".scale_vec::4X").is_ok() {
return Ok(ScaleVecSize::ScaleVec4x);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".scale_vec::2X", ".scale_vec::4X"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Stype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".ue8m0").is_ok() {
return Ok(Stype::Ue8m0);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".ue4m3").is_ok() {
return Ok(Stype::Ue4m3);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".ue8m0", ".ue4m3"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser
for MmaSpvariantSyncAlignedM16n8k128RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype1
{
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k128")?;
let m16n8k128 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let kind = Kind::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".block_scale")?;
let block_scale = ();
stream.expect_complete()?;
let scale_vec_size = ScaleVecSize::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
stream.expect_string(".e2m1")?;
let e2m1 = ();
stream.expect_complete()?;
stream.expect_string(".e2m1")?;
let e2m12 = ();
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let stype = Stype::parse(stream)?;
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let scale_a_data = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let byte_id_a = VectorOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let scale_b_data = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let byte_id_b = VectorOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k128RowColKindBlockScaleScaleVecSizeF32E2m1E2m1F32Stype1 {
spvariant,
sync,
aligned,
m16n8k128,
row,
col,
kind,
block_scale,
scale_vec_size,
f32,
e2m1,
e2m12,
f322,
stype,
d,
a,
b,
c,
e,
f,
scale_a_data,
byte_id_a,
scale_b_data,
byte_id_b,
})
}
}
}
pub mod section_4 {
use super::*;
use crate::r#type::instruction::mma_sp::section_4::*;
impl PtxParser for F8f6f4type {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".e4m3").is_ok() {
return Ok(F8f6f4type::E4m3);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e5m2").is_ok() {
return Ok(F8f6f4type::E5m2);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e3m2").is_ok() {
return Ok(F8f6f4type::E3m2);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e2m3").is_ok() {
return Ok(F8f6f4type::E2m3);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".e2m1").is_ok() {
return Ok(F8f6f4type::E2m1);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".e4m3", ".e5m2", ".e3m2", ".e2m3", ".e2m1"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Kind {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".kind::mxf8f6f4").is_ok() {
return Ok(Kind::KindMxf8f6f4);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".kind::mxf8f6f4"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for ScaleVecSize {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".scale_vec::1X").is_ok() {
return Ok(ScaleVecSize::ScaleVec1x);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".scale_vec::1X"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Stype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".ue8m0").is_ok() {
return Ok(Stype::Ue8m0);
}
stream.set_position(saved_pos);
}
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".ue8m0"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for MmaSpvariantSyncAlignedM16n8k64RowColKindBlockScaleScaleVecSizeF32F8f6f4typeF8f6f4typeF32Stype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
stream.expect_string(".m16n8k64")?;
let m16n8k64 = ();
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let kind = Kind::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".block_scale")?;
let block_scale = ();
stream.expect_complete()?;
let saved_pos = stream.position();
let scale_vec_size = match ScaleVecSize::parse(stream) {
Ok(val) => Some(val),
Err(_) => {
stream.set_position(saved_pos);
None
}
};
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f32 = ();
stream.expect_complete()?;
let f8f6f4type = F8f6f4type::parse(stream)?;
stream.expect_complete()?;
let f8f6f4type1 = F8f6f4type::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".f32")?;
let f322 = ();
stream.expect_complete()?;
let stype = Stype::parse(stream)?;
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let scale_a_data = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let byte_id_a = VectorOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let scale_b_data = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let byte_id_b = VectorOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(MmaSpvariantSyncAlignedM16n8k64RowColKindBlockScaleScaleVecSizeF32F8f6f4typeF8f6f4typeF32Stype {
spvariant,
sync,
aligned,
m16n8k64,
row,
col,
kind,
block_scale,
scale_vec_size,
f32,
f8f6f4type,
f8f6f4type1,
f322,
stype,
d,
a,
b,
c,
e,
f,
scale_a_data,
byte_id_a,
scale_b_data,
byte_id_b,
})
}
}
}
pub mod section_5 {
use super::*;
use crate::r#type::instruction::mma_sp::section_5::*;
impl PtxParser for Atype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".u8").is_ok() {
return Ok(Atype::U8);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".s8").is_ok() {
return Ok(Atype::S8);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".u8", ".s8"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Btype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".u8").is_ok() {
return Ok(Btype::U8);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".s8").is_ok() {
return Ok(Btype::S8);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".u8", ".s8"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Shape {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".m16n8k32").is_ok() {
return Ok(Shape::M16n8k32);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".m16n8k64").is_ok() {
return Ok(Shape::M16n8k64);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".m16n8k32", ".m16n8k64"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".sp").is_ok() {
return Ok(Spvariant::Sp);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata", ".sp"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for MmaSpvariantSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS32 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
let shape = Shape::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let saved_pos = stream.position();
let satfinite = stream.expect_string(".satfinite").is_ok();
if !satfinite {
stream.set_position(saved_pos);
}
stream.expect_complete()?;
stream.expect_string(".s32")?;
let s32 = ();
stream.expect_complete()?;
let atype = Atype::parse(stream)?;
stream.expect_complete()?;
let btype = Btype::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".s32")?;
let s322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(
MmaSpvariantSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS32 {
spvariant,
sync,
aligned,
shape,
row,
col,
satfinite,
s32,
atype,
btype,
s322,
d,
a,
b,
c,
e,
f,
},
)
}
}
}
pub mod section_6 {
use super::*;
use crate::r#type::instruction::mma_sp::section_6::*;
impl PtxParser for Atype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".u4").is_ok() {
return Ok(Atype::U4);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".s4").is_ok() {
return Ok(Atype::S4);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".u4", ".s4"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Btype {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".u4").is_ok() {
return Ok(Btype::U4);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".s4").is_ok() {
return Ok(Btype::S4);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".u4", ".s4"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Shape {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".m16n8k128").is_ok() {
return Ok(Shape::M16n8k128);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".m16n8k64").is_ok() {
return Ok(Shape::M16n8k64);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".m16n8k128", ".m16n8k64"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for Spvariant {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
{
let saved_pos = stream.position();
if stream.expect_string(".sp::ordered_metadata").is_ok() {
return Ok(Spvariant::SpOrderedMetadata);
}
stream.set_position(saved_pos);
}
let saved_pos = stream.position();
{
let saved_pos = stream.position();
if stream.expect_string(".sp").is_ok() {
return Ok(Spvariant::Sp);
}
stream.set_position(saved_pos);
}
stream.set_position(saved_pos);
let span = stream
.peek()
.map(|(_, s)| s.clone())
.unwrap_or(Span { start: 0, end: 0 });
let expected = &[".sp::ordered_metadata", ".sp"];
let found = stream
.peek()
.map(|(t, _)| format!("{:?}", t))
.unwrap_or_else(|_| "<end of input>".to_string());
Err(crate::parser::unexpected_value(span, expected, found))
}
}
impl PtxParser for MmaSpvariantSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS321 {
fn parse(stream: &mut PtxTokenStream) -> Result<Self, PtxParseError> {
stream.expect_string("mma")?;
let spvariant = Spvariant::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".sync")?;
let sync = ();
stream.expect_complete()?;
stream.expect_string(".aligned")?;
let aligned = ();
stream.expect_complete()?;
let shape = Shape::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".row")?;
let row = ();
stream.expect_complete()?;
stream.expect_string(".col")?;
let col = ();
stream.expect_complete()?;
let saved_pos = stream.position();
let satfinite = stream.expect_string(".satfinite").is_ok();
if !satfinite {
stream.set_position(saved_pos);
}
stream.expect_complete()?;
stream.expect_string(".s32")?;
let s32 = ();
stream.expect_complete()?;
let atype = Atype::parse(stream)?;
stream.expect_complete()?;
let btype = Btype::parse(stream)?;
stream.expect_complete()?;
stream.expect_string(".s32")?;
let s322 = ();
stream.expect_complete()?;
let d = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let a = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let b = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let c = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let e = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect(&PtxToken::Comma)?;
let f = GeneralOperand::parse(stream)?;
stream.expect_complete()?;
stream.expect_complete()?;
stream.expect(&PtxToken::Semicolon)?;
Ok(
MmaSpvariantSyncAlignedShapeRowColSatfiniteS32AtypeBtypeS321 {
spvariant,
sync,
aligned,
shape,
row,
col,
satfinite,
s32,
atype,
btype,
s322,
d,
a,
b,
c,
e,
f,
},
)
}
}
}