summaryrefslogtreecommitdiff
path: root/src/arch/arm/insts
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/insts')
-rw-r--r--src/arch/arm/insts/pred_inst.cc5
-rw-r--r--src/arch/arm/insts/pred_inst.hh46
2 files changed, 5 insertions, 46 deletions
diff --git a/src/arch/arm/insts/pred_inst.cc b/src/arch/arm/insts/pred_inst.cc
index 94386e400..049c42f01 100644
--- a/src/arch/arm/insts/pred_inst.cc
+++ b/src/arch/arm/insts/pred_inst.cc
@@ -62,12 +62,9 @@ PredIntOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
}
std::string
-PredImmOpBase::generateDisassembly(Addr pc, const SymbolTable *symtab) const
+PredImmOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
std::stringstream ss;
- unsigned rotate = machInst.rotate * 2;
- uint32_t imm = machInst.imm;
- imm = (imm << (32 - rotate)) | (imm >> rotate);
printDataInst(ss, true, machInst.opcode4 == 0, machInst.sField,
(IntRegIndex)(uint32_t)machInst.rd,
(IntRegIndex)(uint32_t)machInst.rn,
diff --git a/src/arch/arm/insts/pred_inst.hh b/src/arch/arm/insts/pred_inst.hh
index 39d479d4f..8f92a2f26 100644
--- a/src/arch/arm/insts/pred_inst.hh
+++ b/src/arch/arm/insts/pred_inst.hh
@@ -98,65 +98,27 @@ class PredOp : public ArmStaticInst
/**
* Base class for predicated immediate operations.
*/
-class PredImmOpBase : public PredOp
+class PredImmOp : public PredOp
{
protected:
uint32_t imm;
uint32_t rotated_imm;
uint32_t rotated_carry;
-
- /// Constructor
- PredImmOpBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass) :
- PredOp(mnem, _machInst, __opClass),
- imm(machInst.imm), rotated_imm(0), rotated_carry(0)
- {
- }
-
- std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
-};
-
-/**
- * Base class for regular predicated immediate operations.
- */
-class PredImmOp : public PredImmOpBase
-{
- protected:
-
uint32_t rotate;
/// Constructor
PredImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass) :
- PredImmOpBase(mnem, _machInst, __opClass),
+ PredOp(mnem, _machInst, __opClass),
+ imm(machInst.imm), rotated_imm(0), rotated_carry(0),
rotate(machInst.rotate << 1)
{
rotated_imm = rotate_imm(imm, rotate);
if (rotate != 0)
rotated_carry = bits(rotated_imm, 31);
}
-};
-
-/**
- * Base class for modified predicated immediate operations.
- */
-class PredModImmOp : public PredImmOpBase
-{
- protected:
- uint8_t ctrlImm;
- uint8_t dataImm;
-
-
- /// Constructor
- PredModImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass) :
- PredImmOpBase(mnem, _machInst, __opClass),
- ctrlImm(bits(machInst.instBits, 26) << 3 |
- bits(machInst.instBits, 14, 12)),
- dataImm(bits(machInst.instBits, 7, 0))
- {
- rotated_imm = modified_imm(ctrlImm, dataImm);
- rotated_carry = bits(rotated_imm, 31);
- }
+ std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
};
/**