/*! \file Instruction.cpp \brief Decode instructions part of the RISC-V \author Màrius Montón \date August 2018 */ // SPDX-License-Identifier: GPL-3.0-or-later #include "Instruction.h" namespace riscv_tlm { Instruction::Instruction(std::uint32_t instr) { m_instr = instr; } extension_t Instruction::check_extension() const { if (((m_instr & 0x0000007F) == 0b0110011) && (((m_instr & 0x7F000000) >> 25) == 0b0000001)) { return M_EXTENSION; } else if ((m_instr & 0x0000007F) == 0b0101111) { return A_EXTENSION; } else if ((m_instr & 0x00000003) == 0b00) { return C_EXTENSION; } else if ((m_instr & 0x00000003) == 0b01) { return C_EXTENSION; } else if ((m_instr & 0x00000003) == 0b10) { return C_EXTENSION; } else { return BASE_EXTENSION; } } }