1c1,14
< /* Copyright (c) 2007-2008 The Florida State University
---
> /*
> * Copyright (c) 2010 ARM Limited
> * All rights reserved
> *
> * The license below extends only to copyright in the software and shall
> * not be construed as granting a license to any other intellectual
> * property including but not limited to intellectual property relating
> * to a hardware implementation of the functionality of the software
> * licensed hereunder. You may use the software subject to the license
> * terms below provided that you ensure that this notice is replicated
> * unmodified and in its entirety in all distributions of the software,
> * modified or unmodified, in source code or in binary form.
> *
> * Copyright (c) 2007-2008 The Florida State University
64c77
< class PredImmOp : public PredOp
---
> class PredImmOpBase : public PredOp
69d81
< uint32_t rotate;
73a86,104
> 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
75,77c106,107
< PredOp(mnem, _machInst, __opClass),
< imm(machInst.imm), rotate(machInst.rotate << 1),
< rotated_imm(0), rotated_carry(0)
---
> PredImmOpBase(mnem, _machInst, __opClass),
> rotate(machInst.rotate << 1)
81c111
< rotated_carry = (rotated_imm >> 31) & 1;
---
> rotated_carry = bits(rotated_imm, 31);
82a113
> };
84c115,135
< std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
---
> /**
> * 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);
> }