| Index: src/mips/constants-mips.h
 | 
| diff --git a/src/mips/constants-mips.h b/src/mips/constants-mips.h
 | 
| index ede9688a682fba32d74d7b25166d0d9106c1873e..d76ae59ff690c8a6e3b86905a313f50c0fa05e3e 100644
 | 
| --- a/src/mips/constants-mips.h
 | 
| +++ b/src/mips/constants-mips.h
 | 
| @@ -204,6 +204,10 @@ static const int kImm26Bits  = 26;
 | 
|  static const int kImm28Shift = 0;
 | 
|  static const int kImm28Bits  = 28;
 | 
|  
 | 
| +// In branches and jumps immediate fields point to words, not bytes,
 | 
| +// and are therefore shifted by 2.
 | 
| +static const int kImmFieldShift = 2;
 | 
| +
 | 
|  static const int kFsShift       = 11;
 | 
|  static const int kFsBits        = 5;
 | 
|  static const int kFtShift       = 16;
 | 
| @@ -233,7 +237,7 @@ static const int  kFunctionFieldMask =
 | 
|  static const int  kHiMask       =   0xffff << 16;
 | 
|  static const int  kLoMask       =   0xffff;
 | 
|  static const int  kSignMask     =   0x80000000;
 | 
| -
 | 
| +static const int  kJumpAddrMask = (1 << (kImm26Bits + kImmFieldShift)) - 1;
 | 
|  
 | 
|  // ----- MIPS Opcodes and Function Fields.
 | 
|  // We use this presentation to stay close to the table representation in
 | 
| @@ -290,12 +294,12 @@ enum Opcode {
 | 
|  enum SecondaryField {
 | 
|    // SPECIAL Encoding of Function Field.
 | 
|    SLL       =   ((0 << 3) + 0),
 | 
| +  MOVCI     =   ((0 << 3) + 1),
 | 
|    SRL       =   ((0 << 3) + 2),
 | 
|    SRA       =   ((0 << 3) + 3),
 | 
|    SLLV      =   ((0 << 3) + 4),
 | 
|    SRLV      =   ((0 << 3) + 6),
 | 
|    SRAV      =   ((0 << 3) + 7),
 | 
| -  MOVCI     =   ((0 << 3) + 1),
 | 
|  
 | 
|    JR        =   ((1 << 3) + 0),
 | 
|    JALR      =   ((1 << 3) + 1),
 | 
| @@ -498,14 +502,38 @@ inline Condition ReverseCondition(Condition cc) {
 | 
|  
 | 
|  // ----- Coprocessor conditions.
 | 
|  enum FPUCondition {
 | 
| -  F,    // False.
 | 
| -  UN,   // Unordered.
 | 
| -  EQ,   // Equal.
 | 
| -  UEQ,  // Unordered or Equal.
 | 
| -  OLT,  // Ordered or Less Than.
 | 
| -  ULT,  // Unordered or Less Than.
 | 
| -  OLE,  // Ordered or Less Than or Equal.
 | 
| -  ULE   // Unordered or Less Than or Equal.
 | 
| +  kNoFPUCondition = -1,
 | 
| +
 | 
| +  F     = 0,  // False.
 | 
| +  UN    = 1,  // Unordered.
 | 
| +  EQ    = 2,  // Equal.
 | 
| +  UEQ   = 3,  // Unordered or Equal.
 | 
| +  OLT   = 4,  // Ordered or Less Than.
 | 
| +  ULT   = 5,  // Unordered or Less Than.
 | 
| +  OLE   = 6,  // Ordered or Less Than or Equal.
 | 
| +  ULE   = 7   // Unordered or Less Than or Equal.
 | 
| +};
 | 
| +
 | 
| +
 | 
| +// FPU rounding modes.
 | 
| +enum FPURoundingMode {
 | 
| +  RN = 0 << 0,  // Round to Nearest.
 | 
| +  RZ = 1 << 0,  // Round towards zero.
 | 
| +  RP = 2 << 0,  // Round towards Plus Infinity.
 | 
| +  RM = 3 << 0,  // Round towards Minus Infinity.
 | 
| +
 | 
| +  // Aliases.
 | 
| +  kRoundToNearest = RN,
 | 
| +  kRoundToZero = RZ,
 | 
| +  kRoundToPlusInf = RP,
 | 
| +  kRoundToMinusInf = RM
 | 
| +};
 | 
| +
 | 
| +static const uint32_t kFPURoundingModeMask = 3 << 0;
 | 
| +
 | 
| +enum CheckForInexactConversion {
 | 
| +  kCheckForInexactConversion,
 | 
| +  kDontCheckForInexactConversion
 | 
|  };
 | 
|  
 | 
|  
 | 
| @@ -716,7 +744,7 @@ class Instruction {
 | 
|  
 | 
|    inline int32_t Imm26Value() const {
 | 
|      ASSERT(InstructionType() == kJumpType);
 | 
| -    return Bits(kImm16Shift + kImm26Bits - 1, kImm26Shift);
 | 
| +    return Bits(kImm26Shift + kImm26Bits - 1, kImm26Shift);
 | 
|    }
 | 
|  
 | 
|    // Say if the instruction should not be used in a branch delay slot.
 | 
| 
 |