1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
use strum_macros::{IntoStaticStr, VariantArray};
use super::{super::super::basic::parser::lexer::RISCVOpToken, oplist::OP_LIST};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, VariantArray, IntoStaticStr)]
#[strum(serialize_all = "snake_case")]
pub enum RV32FOpToken {
FaddS,
FclassS,
FcvtSW,
FcvtSWu,
FcvtWS,
FcvtWuS,
FdivS,
FeqS,
FleS,
FltS,
Flw,
FmaddS,
FmaxS,
FminS,
FmsubS,
FmulS,
FmvSX,
FmvXS,
FnmaddS,
FnmsubS,
FsgnjS,
FsgnjnS,
FsgnjxS,
FsqrtS,
FsubS,
Fsw,
FabsS,
FgeS,
FgtS,
FmvS,
FmvWX,
FmvXW,
FnegS,
// FaddD,
// FclassD,
// FcvtDS,
// FcvtDW,
// FcvtDWu,
// FcvtSD,
// FcvtWD,
// FcvtWuD,
// FdivD,
// FeqD,
// Fld,
// FleD,
// FltD,
// FmaddD,
// FmaxD,
// FminD,
// FmsubD,
// FmulD,
// FnmaddD,
// FnmsubD,
// Fsd,
// FsgnjD,
// FsgnjnD,
// FsgnjxD,
// FsqrtD,
// FsubD,
// FabsD,
// FgeD,
// FgtD,
// FmvD,
// FnegD,
Frcsr,
Frflags,
Frrm,
Frsr,
Fsflags,
Fsrm,
Fsrr,
}
impl RV32FOpToken {
pub fn name(&self) -> String {
Into::<&'static str>::into(self).replace("_", ".")
}
}
impl From<RV32FOpToken> for RISCVOpToken {
fn from(op: RV32FOpToken) -> RISCVOpToken {
RISCVOpToken {
val: op as u8,
get_opd_set_fn: |v| &OP_LIST[v as usize],
}
}
}