mirror of
https://github.com/kmc7468/cs420.git
synced 2025-12-16 15:38:48 +00:00
Update skeleton
This commit is contained in:
@@ -421,8 +421,12 @@ pub enum IType {
|
||||
Xori,
|
||||
Ori,
|
||||
Andi,
|
||||
Slli,
|
||||
Srli,
|
||||
Slli(Option<DataSize>),
|
||||
Srli(Option<DataSize>),
|
||||
Srai(Option<DataSize>),
|
||||
Slti {
|
||||
is_signed: bool,
|
||||
},
|
||||
}
|
||||
|
||||
impl IType {
|
||||
@@ -457,6 +461,30 @@ impl IType {
|
||||
is_signed,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn slli(dtype: ir::Dtype) -> Self {
|
||||
let data_size =
|
||||
DataSize::try_from(dtype).expect("`data_size` must be derived from `dtype`");
|
||||
assert!(data_size.is_integer());
|
||||
|
||||
Self::Slli(data_size.word())
|
||||
}
|
||||
|
||||
pub fn srli(dtype: ir::Dtype) -> Self {
|
||||
let data_size =
|
||||
DataSize::try_from(dtype).expect("`data_size` must be derived from `dtype`");
|
||||
assert!(data_size.is_integer());
|
||||
|
||||
Self::Srli(data_size.word())
|
||||
}
|
||||
|
||||
pub fn srai(dtype: ir::Dtype) -> Self {
|
||||
let data_size =
|
||||
DataSize::try_from(dtype).expect("`data_size` must be derived from `dtype`");
|
||||
assert!(data_size.is_integer());
|
||||
|
||||
Self::Srai(data_size.word())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
|
||||
@@ -208,7 +208,7 @@ impl WriteString for RType {
|
||||
Self::Sub(data_size) => format!("sub{}", data_size.write_string()),
|
||||
Self::Sll(data_size) => format!("sll{}", data_size.write_string()),
|
||||
Self::Srl(data_size) => format!("srl{}", data_size.write_string()),
|
||||
Self::Sra(data_size) => format!("srl{}", data_size.write_string()),
|
||||
Self::Sra(data_size) => format!("sra{}", data_size.write_string()),
|
||||
Self::Mul(data_size) => format!("mul{}", data_size.write_string()),
|
||||
Self::Div {
|
||||
data_size,
|
||||
@@ -333,8 +333,10 @@ impl WriteString for IType {
|
||||
Self::Xori => "xori".to_string(),
|
||||
Self::Ori => "ori".to_string(),
|
||||
Self::Andi => "andi".to_string(),
|
||||
Self::Slli => "slli".to_string(),
|
||||
Self::Srli => "srli".to_string(),
|
||||
Self::Slli(data_size) => format!("slli{}", data_size.write_string()),
|
||||
Self::Srli(data_size) => format!("srli{}", data_size.write_string()),
|
||||
Self::Srai(data_size) => format!("srai{}", data_size.write_string()),
|
||||
Self::Slti { is_signed } => format!("slti{}", if *is_signed { "" } else { "u" }),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user