diff --git a/ptx/src/ast.rs b/ptx/src/ast.rs index 3a7cf98..6a01a6a 100644 --- a/ptx/src/ast.rs +++ b/ptx/src/ast.rs @@ -595,32 +595,10 @@ pub struct LdDetails { pub qualifier: LdStQualifier, pub state_space: LdStateSpace, pub caching: LdCacheOperator, - pub typ: LdStType, + pub typ: PointerType, pub non_coherent: bool, } -sub_type! { - LdStType { - Scalar(ScalarType), - Vector(ScalarType, u8), - // Used in generated code - Pointer(PointerType, LdStateSpace), - } -} - -impl From for PointerType { - fn from(t: LdStType) -> Self { - match t { - LdStType::Scalar(t) => PointerType::Scalar(t.into()), - LdStType::Vector(t, len) => PointerType::Vector(t.into(), len), - LdStType::Pointer(PointerType::Scalar(scalar_type), space) => { - PointerType::Pointer(scalar_type, space) - } - LdStType::Pointer(..) => unreachable!(), - } - } -} - #[derive(Copy, Clone, PartialEq, Eq)] pub enum LdStQualifier { Weak, @@ -853,7 +831,7 @@ pub struct StData { pub qualifier: LdStQualifier, pub state_space: StStateSpace, pub caching: StCacheOperator, - pub typ: LdStType, + pub typ: PointerType, } #[derive(PartialEq, Eq, Copy, Clone)] diff --git a/ptx/src/ptx.lalrpop b/ptx/src/ptx.lalrpop index 7bd9c4f..44852a2 100644 --- a/ptx/src/ptx.lalrpop +++ b/ptx/src/ptx.lalrpop @@ -789,9 +789,9 @@ InstLd: ast::Instruction> = { } }; -LdStType: ast::LdStType = { - => ast::LdStType::Vector(t, v), - => ast::LdStType::Scalar(t), +LdStType: ast::PointerType = { + => ast::PointerType::Vector(t, v), + => ast::PointerType::Scalar(t), } LdStQualifier: ast::LdStQualifier = { diff --git a/ptx/src/translate.rs b/ptx/src/translate.rs index 7eec085..1f647bd 100644 --- a/ptx/src/translate.rs +++ b/ptx/src/translate.rs @@ -4553,7 +4553,7 @@ fn convert_to_stateful_memory_access<'a>( Statement::Instruction(ast::Instruction::Ld( ast::LdDetails { state_space: ast::LdStateSpace::Param, - typ: ast::LdStType::Scalar(ast::ScalarType::U64), + typ: ast::PointerType::Scalar(ast::ScalarType::U64), .. }, arg, @@ -4561,7 +4561,7 @@ fn convert_to_stateful_memory_access<'a>( | Statement::Instruction(ast::Instruction::Ld( ast::LdDetails { state_space: ast::LdStateSpace::Param, - typ: ast::LdStType::Scalar(ast::ScalarType::S64), + typ: ast::PointerType::Scalar(ast::ScalarType::S64), .. }, arg, @@ -4569,7 +4569,7 @@ fn convert_to_stateful_memory_access<'a>( | Statement::Instruction(ast::Instruction::Ld( ast::LdDetails { state_space: ast::LdStateSpace::Param, - typ: ast::LdStType::Scalar(ast::ScalarType::B64), + typ: ast::PointerType::Scalar(ast::ScalarType::B64), .. }, arg,