Lines Matching defs:inst

70 constexpr uint32_t DecodeJImm(uint32_t inst) {  in DecodeJImm()
77 constexpr uint32_t DecodeIImm(uint32_t inst) { in DecodeIImm()
81 constexpr uint32_t DecodeBImm(uint32_t inst) { in DecodeBImm()
88 constexpr uint32_t DecodeSImm(uint32_t inst) { in DecodeSImm()
93 constexpr uint32_t DecodeUImm(uint32_t inst) { in DecodeUImm()
220 LoadStoreAddr(EmulateInstructionRISCV &emulator, I inst) { in LoadStoreAddr()
229 Load(EmulateInstructionRISCV &emulator, I inst, uint64_t (*extend)(E)) { in Load()
241 Store(EmulateInstructionRISCV &emulator, I inst) { in Store()
255 AtomicAddr(EmulateInstructionRISCV &emulator, I inst, unsigned int align) { in AtomicAddr()
267 AtomicSwap(EmulateInstructionRISCV &emulator, I inst, int align, in AtomicSwap()
284 AtomicADD(EmulateInstructionRISCV &emulator, I inst, int align, in AtomicADD()
301 AtomicBitOperate(EmulateInstructionRISCV &emulator, I inst, int align, in AtomicBitOperate()
318 AtomicCmp(EmulateInstructionRISCV &emulator, I inst, int align, in AtomicCmp()
348 auto inst = emulator.ReadInstructionAt(current_pc); in AtomicSequence() local
384 template <typename T> static RISCVInst DecodeUType(uint32_t inst) { in DecodeUType()
388 template <typename T> static RISCVInst DecodeJType(uint32_t inst) { in DecodeJType()
392 template <typename T> static RISCVInst DecodeIType(uint32_t inst) { in DecodeIType()
396 template <typename T> static RISCVInst DecodeBType(uint32_t inst) { in DecodeBType()
401 template <typename T> static RISCVInst DecodeSType(uint32_t inst) { in DecodeSType()
405 template <typename T> static RISCVInst DecodeRType(uint32_t inst) { in DecodeRType()
409 template <typename T> static RISCVInst DecodeRShamtType(uint32_t inst) { in DecodeRShamtType()
413 template <typename T> static RISCVInst DecodeRRS1Type(uint32_t inst) { in DecodeRRS1Type()
417 template <typename T> static RISCVInst DecodeR4Type(uint32_t inst) { in DecodeR4Type()
621 std::optional<DecodeResult> EmulateInstructionRISCV::Decode(uint32_t inst) { in Decode()
666 bool operator()(LUI inst) { return inst.rd.Write(m_emu, SignExt(inst.imm)); } in operator ()()
667 bool operator()(AUIPC inst) { in operator ()()
675 bool operator()(JAL inst) { in operator ()()
683 bool operator()(JALR inst) { in operator ()()
693 bool operator()(B inst) { in operator ()()
705 bool operator()(LB inst) { in operator ()()
708 bool operator()(LH inst) { in operator ()()
711 bool operator()(LW inst) { in operator ()()
714 bool operator()(LBU inst) { in operator ()()
717 bool operator()(LHU inst) { in operator ()()
720 bool operator()(SB inst) { return Store<SB, uint8_t>(m_emu, inst); } in operator ()()
721 bool operator()(SH inst) { return Store<SH, uint16_t>(m_emu, inst); } in operator ()()
722 bool operator()(SW inst) { return Store<SW, uint32_t>(m_emu, inst); } in operator ()()
723 bool operator()(ADDI inst) { in operator ()()
731 bool operator()(SLTI inst) { in operator ()()
739 bool operator()(SLTIU inst) { in operator ()()
747 bool operator()(XORI inst) { in operator ()()
755 bool operator()(ORI inst) { in operator ()()
763 bool operator()(ANDI inst) { in operator ()()
771 bool operator()(ADD inst) { in operator ()()
779 bool operator()(SUB inst) { in operator ()()
787 bool operator()(SLL inst) { in operator ()()
796 bool operator()(SLT inst) { in operator ()()
805 bool operator()(SLTU inst) { in operator ()()
813 bool operator()(XOR inst) { in operator ()()
821 bool operator()(SRL inst) { in operator ()()
830 bool operator()(SRA inst) { in operator ()()
839 bool operator()(OR inst) { in operator ()()
847 bool operator()(AND inst) { in operator ()()
855 bool operator()(LWU inst) { in operator ()()
858 bool operator()(LD inst) { in operator ()()
861 bool operator()(SD inst) { return Store<SD, uint64_t>(m_emu, inst); } in operator ()()
862 bool operator()(SLLI inst) { in operator ()()
869 bool operator()(SRLI inst) { in operator ()()
876 bool operator()(SRAI inst) { in operator ()()
883 bool operator()(ADDIW inst) { in operator ()()
891 bool operator()(SLLIW inst) { in operator ()()
899 bool operator()(SRLIW inst) { in operator ()()
907 bool operator()(SRAIW inst) { in operator ()()
915 bool operator()(ADDW inst) { in operator ()()
924 bool operator()(SUBW inst) { in operator ()()
933 bool operator()(SLLW inst) { in operator ()()
942 bool operator()(SRLW inst) { in operator ()()
951 bool operator()(SRAW inst) { in operator ()()
961 bool operator()(MUL inst) { in operator ()()
969 bool operator()(MULH inst) { in operator ()()
981 bool operator()(MULHSU inst) { in operator ()()
994 bool operator()(MULHU inst) { in operator ()()
1006 bool operator()(DIV inst) { in operator ()()
1022 bool operator()(DIVU inst) { in operator ()()
1034 bool operator()(REM inst) { in operator ()()
1050 bool operator()(REMU inst) { in operator ()()
1062 bool operator()(MULW inst) { in operator ()()
1071 bool operator()(DIVW inst) { in operator ()()
1087 bool operator()(DIVUW inst) { in operator ()()
1100 bool operator()(REMW inst) { in operator ()()
1116 bool operator()(REMUW inst) { in operator ()()
1138 bool operator()(AMOSWAP_W inst) { in operator ()()
1141 bool operator()(AMOADD_W inst) { in operator ()()
1144 bool operator()(AMOXOR_W inst) { in operator ()()
1148 bool operator()(AMOAND_W inst) { in operator ()()
1152 bool operator()(AMOOR_W inst) { in operator ()()
1156 bool operator()(AMOMIN_W inst) { in operator ()()
1162 bool operator()(AMOMAX_W inst) { in operator ()()
1168 bool operator()(AMOMINU_W inst) { in operator ()()
1173 bool operator()(AMOMAXU_W inst) { in operator ()()
1178 bool operator()(AMOSWAP_D inst) { in operator ()()
1181 bool operator()(AMOADD_D inst) { in operator ()()
1184 bool operator()(AMOXOR_D inst) { in operator ()()
1188 bool operator()(AMOAND_D inst) { in operator ()()
1192 bool operator()(AMOOR_D inst) { in operator ()()
1196 bool operator()(AMOMIN_D inst) { in operator ()()
1202 bool operator()(AMOMAX_D inst) { in operator ()()
1208 bool operator()(AMOMINU_D inst) { in operator ()()
1213 bool operator()(AMOMAXU_D inst) { in operator ()()
1219 bool F_Load(T inst, const fltSemantics &(*semantics)(), in F_Load()
1230 bool operator()(FLW inst) { return F_Load(inst, &APFloat::IEEEsingle, 32); } in operator ()()
1231 template <typename T> bool F_Store(T inst, bool isDouble) { in F_Store()
1243 bool operator()(FSW inst) { return F_Store(inst, false); } in operator ()()
1251 bool FMA(T inst, bool isDouble, float rs2_sign, float rs3_sign) { in FMA()
1264 bool operator()(FMADD_S inst) { return FMA(inst, false, 1.0f, 1.0f); } in operator ()()
1265 bool operator()(FMSUB_S inst) { return FMA(inst, false, 1.0f, -1.0f); } in operator ()()
1266 bool operator()(FNMSUB_S inst) { return FMA(inst, false, -1.0f, 1.0f); } in operator ()()
1267 bool operator()(FNMADD_S inst) { return FMA(inst, false, -1.0f, -1.0f); } in operator ()()
1269 bool F_Op(T inst, bool isDouble, in F_Op()
1283 bool operator()(FADD_S inst) { return F_Op(inst, false, &APFloat::add); } in operator ()()
1284 bool operator()(FSUB_S inst) { return F_Op(inst, false, &APFloat::subtract); } in operator ()()
1285 bool operator()(FMUL_S inst) { return F_Op(inst, false, &APFloat::multiply); } in operator ()()
1286 bool operator()(FDIV_S inst) { return F_Op(inst, false, &APFloat::divide); } in operator ()()
1287 bool operator()(FSQRT_S inst) { in operator ()()
1291 template <typename T> bool F_SignInj(T inst, bool isDouble, bool isNegate) { in F_SignInj()
1303 bool operator()(FSGNJ_S inst) { return F_SignInj(inst, false, false); } in operator ()()
1304 bool operator()(FSGNJN_S inst) { return F_SignInj(inst, false, true); } in operator ()()
1305 template <typename T> bool F_SignInjXor(T inst, bool isDouble) { in F_SignInjXor()
1324 bool operator()(FSGNJX_S inst) { return F_SignInjXor(inst, false); } in operator ()()
1326 bool F_MAX_MIN(T inst, bool isDouble, in F_MAX_MIN()
1347 bool operator()(FMIN_S inst) { return F_MAX_MIN(inst, false, minnum); } in operator ()()
1348 bool operator()(FMAX_S inst) { return F_MAX_MIN(inst, false, maxnum); } in operator ()()
1349 bool operator()(FCVT_W_S inst) { in operator ()()
1353 bool operator()(FCVT_WU_S inst) { in operator ()()
1357 template <typename T> bool FMV_f2i(T inst, bool isDouble) { in FMV_f2i()
1375 bool operator()(FMV_X_W inst) { return FMV_f2i(inst, false); } in operator ()()
1381 template <typename T> bool F_Compare(T inst, bool isDouble, F_CMP cmp) { in F_Compare()
1414 bool operator()(FEQ_S inst) { return F_Compare(inst, false, FEQ); } in operator ()()
1415 bool operator()(FLT_S inst) { return F_Compare(inst, false, FLT); } in operator ()()
1416 bool operator()(FLE_S inst) { return F_Compare(inst, false, FLE); } in operator ()()
1417 template <typename T> bool FCLASS(T inst, bool isDouble) { in FCLASS()
1451 bool operator()(FCLASS_S inst) { return FCLASS(inst, false); } in operator ()()
1453 bool FCVT_f2i(T inst, std::optional<E> (Rs::*f)(EmulateInstructionRISCV &emu), in FCVT_f2i()
1462 bool operator()(FCVT_S_W inst) { in operator ()()
1465 bool operator()(FCVT_S_WU inst) { in operator ()()
1469 bool FMV_i2f(T inst, unsigned int numBits, E (APInt::*f)() const) { in FMV_i2f()
1480 bool operator()(FMV_W_X inst) { in operator ()()
1484 bool FCVT_i2f(I inst, bool isDouble, T (APFloat::*f)() const) { in FCVT_i2f()
1492 bool operator()(FCVT_L_S inst) { in operator ()()
1496 bool operator()(FCVT_LU_S inst) { in operator ()()
1500 bool operator()(FCVT_S_L inst) { in operator ()()
1503 bool operator()(FCVT_S_LU inst) { in operator ()()
1506 bool operator()(FLD inst) { return F_Load(inst, &APFloat::IEEEdouble, 64); } in operator ()()
1507 bool operator()(FSD inst) { return F_Store(inst, true); } in operator ()()
1508 bool operator()(FMADD_D inst) { return FMA(inst, true, 1.0f, 1.0f); } in operator ()()
1509 bool operator()(FMSUB_D inst) { return FMA(inst, true, 1.0f, -1.0f); } in operator ()()
1510 bool operator()(FNMSUB_D inst) { return FMA(inst, true, -1.0f, 1.0f); } in operator ()()
1511 bool operator()(FNMADD_D inst) { return FMA(inst, true, -1.0f, -1.0f); } in operator ()()
1512 bool operator()(FADD_D inst) { return F_Op(inst, true, &APFloat::add); } in operator ()()
1513 bool operator()(FSUB_D inst) { return F_Op(inst, true, &APFloat::subtract); } in operator ()()
1514 bool operator()(FMUL_D inst) { return F_Op(inst, true, &APFloat::multiply); } in operator ()()
1515 bool operator()(FDIV_D inst) { return F_Op(inst, true, &APFloat::divide); } in operator ()()
1516 bool operator()(FSQRT_D inst) { in operator ()()
1520 bool operator()(FSGNJ_D inst) { return F_SignInj(inst, true, false); } in operator ()()
1521 bool operator()(FSGNJN_D inst) { return F_SignInj(inst, true, true); } in operator ()()
1522 bool operator()(FSGNJX_D inst) { return F_SignInjXor(inst, true); } in operator ()()
1523 bool operator()(FMIN_D inst) { return F_MAX_MIN(inst, true, minnum); } in operator ()()
1524 bool operator()(FMAX_D inst) { return F_MAX_MIN(inst, true, maxnum); } in operator ()()
1525 bool operator()(FCVT_S_D inst) { in operator ()()
1534 bool operator()(FCVT_D_S inst) { in operator ()()
1543 bool operator()(FEQ_D inst) { return F_Compare(inst, true, FEQ); } in operator ()()
1544 bool operator()(FLT_D inst) { return F_Compare(inst, true, FLT); } in operator ()()
1545 bool operator()(FLE_D inst) { return F_Compare(inst, true, FLE); } in operator ()()
1546 bool operator()(FCLASS_D inst) { return FCLASS(inst, true); } in operator ()()
1547 bool operator()(FCVT_W_D inst) { in operator ()()
1551 bool operator()(FCVT_WU_D inst) { in operator ()()
1555 bool operator()(FCVT_D_W inst) { in operator ()()
1558 bool operator()(FCVT_D_WU inst) { in operator ()()
1561 bool operator()(FCVT_L_D inst) { in operator ()()
1565 bool operator()(FCVT_LU_D inst) { in operator ()()
1569 bool operator()(FMV_X_D inst) { return FMV_f2i(inst, true); } in operator ()()
1570 bool operator()(FCVT_D_L inst) { in operator ()()
1573 bool operator()(FCVT_D_LU inst) { in operator ()()
1576 bool operator()(FMV_D_X inst) { in operator ()()
1579 bool operator()(INVALID inst) { return false; } in operator ()()
1580 bool operator()(RESERVED inst) { return false; } in operator ()()
1581 bool operator()(EBREAK inst) { return false; } in operator ()()
1582 bool operator()(HINT inst) { return true; } in operator ()()
1583 bool operator()(NOP inst) { return true; } in operator ()()
1586 bool EmulateInstructionRISCV::Execute(DecodeResult inst, bool ignore_cond) { in Execute()
1617 [&](uint32_t inst) { return Decode(inst); }) in ReadInstructionAt()
1626 auto inst = ReadInstructionAt(*addr); in ReadInstruction() local