aboutsummaryrefslogtreecommitdiff
path: root/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h')
-rw-r--r--source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h114
1 files changed, 73 insertions, 41 deletions
diff --git a/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h b/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h
index faefd329a8e4..e0b20792ae1f 100644
--- a/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h
+++ b/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h
@@ -1,4 +1,4 @@
-//===-- EmulateInstructionMIPS64.h ------------------------------------*- C++ -*-===//
+//===-- EmulateInstructionMIPS64.h ------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -10,6 +10,14 @@
#ifndef EmulateInstructionMIPS64_h_
#define EmulateInstructionMIPS64_h_
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Core/EmulateInstruction.h"
+#include "lldb/Core/Error.h"
+#include "lldb/Interpreter/OptionValue.h"
+
namespace llvm
{
class MCDisassembler;
@@ -19,15 +27,13 @@ namespace llvm
class MCContext;
class MCInstrInfo;
class MCInst;
-}
-
-#include "lldb/Core/EmulateInstruction.h"
-#include "lldb/Core/Error.h"
-#include "lldb/Interpreter/OptionValue.h"
+} // namespace llvm
class EmulateInstructionMIPS64 : public lldb_private::EmulateInstruction
{
public:
+ EmulateInstructionMIPS64(const lldb_private::ArchSpec &arch);
+
static void
Initialize ();
@@ -60,57 +66,47 @@ public:
return false;
}
- virtual lldb_private::ConstString
- GetPluginName();
-
- virtual lldb_private::ConstString
- GetShortPluginName()
- {
- return GetPluginNameStatic();
- }
+ lldb_private::ConstString
+ GetPluginName() override;
- virtual uint32_t
- GetPluginVersion()
+ uint32_t
+ GetPluginVersion() override
{
return 1;
}
bool
- SetTargetTriple (const lldb_private::ArchSpec &arch);
+ SetTargetTriple(const lldb_private::ArchSpec &arch) override;
- EmulateInstructionMIPS64 (const lldb_private::ArchSpec &arch);
-
- virtual bool
- SupportsEmulatingInstructionsOfType (lldb_private::InstructionType inst_type)
+ bool
+ SupportsEmulatingInstructionsOfType(lldb_private::InstructionType inst_type) override
{
return SupportsEmulatingInstructionsOfTypeStatic (inst_type);
}
- virtual bool
- ReadInstruction ();
+ bool
+ ReadInstruction() override;
- virtual bool
- EvaluateInstruction (uint32_t evaluate_options);
+ bool
+ EvaluateInstruction(uint32_t evaluate_options) override;
- virtual bool
- TestEmulation (lldb_private::Stream *out_stream,
- lldb_private::ArchSpec &arch,
- lldb_private::OptionValueDictionary *test_data)
+ bool
+ TestEmulation(lldb_private::Stream *out_stream,
+ lldb_private::ArchSpec &arch,
+ lldb_private::OptionValueDictionary *test_data) override
{
return false;
}
- virtual bool
- GetRegisterInfo (lldb::RegisterKind reg_kind,
- uint32_t reg_num,
- lldb_private::RegisterInfo &reg_info);
-
- virtual bool
- CreateFunctionEntryUnwind (lldb_private::UnwindPlan &unwind_plan);
+ bool
+ GetRegisterInfo(lldb::RegisterKind reg_kind,
+ uint32_t reg_num,
+ lldb_private::RegisterInfo &reg_info) override;
+ bool
+ CreateFunctionEntryUnwind(lldb_private::UnwindPlan &unwind_plan) override;
protected:
-
typedef struct
{
const char *op_name;
@@ -128,13 +124,13 @@ protected:
Emulate_SD (llvm::MCInst& insn);
bool
- Emulate_SW (llvm::MCInst& insn);
+ Emulate_LD (llvm::MCInst& insn);
bool
- Emulate_LW (llvm::MCInst& insn);
+ Emulate_LDST_Imm (llvm::MCInst& insn);
bool
- Emulate_LD (llvm::MCInst& insn);
+ Emulate_LDST_Reg (llvm::MCInst& insn);
bool
Emulate_BEQ (llvm::MCInst& insn);
@@ -302,6 +298,42 @@ protected:
Emulate_BC1ANY4T (llvm::MCInst& insn);
bool
+ Emulate_BNZB (llvm::MCInst& insn);
+
+ bool
+ Emulate_BNZH (llvm::MCInst& insn);
+
+ bool
+ Emulate_BNZW (llvm::MCInst& insn);
+
+ bool
+ Emulate_BNZD (llvm::MCInst& insn);
+
+ bool
+ Emulate_BZB (llvm::MCInst& insn);
+
+ bool
+ Emulate_BZH (llvm::MCInst& insn);
+
+ bool
+ Emulate_BZW (llvm::MCInst& insn);
+
+ bool
+ Emulate_BZD (llvm::MCInst& insn);
+
+ bool
+ Emulate_MSA_Branch_DF (llvm::MCInst& insn, int element_byte_size, bool bnz);
+
+ bool
+ Emulate_BNZV (llvm::MCInst& insn);
+
+ bool
+ Emulate_BZV (llvm::MCInst& insn);
+
+ bool
+ Emulate_MSA_Branch_V (llvm::MCInst& insn, bool bnz);
+
+ bool
nonvolatile_reg_p (uint64_t regnum);
const char *
@@ -316,4 +348,4 @@ private:
std::unique_ptr<llvm::MCInstrInfo> m_insn_info;
};
-#endif // EmulateInstructionMIPS64_h_
+#endif // EmulateInstructionMIPS64_h_