// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

#ifndef VM_CONSTANTS_MIPS_H_
#define VM_CONSTANTS_MIPS_H_

namespace dart {

enum Register {
  ZR =  0,
  AT =  1,
  kFirstFreeCpuRegister = 2,
  V0 =  2,
  V1 =  3,
  A0 =  4,
  A1 =  5,
  A2 =  6,
  A3 =  7,
  T0 =  8,
  T1 =  9,
  T2 = 10,
  T3 = 11,
  T4 = 12,
  T5 = 13,
  T6 = 14,
  T7 = 15,
  S0 = 16,
  S1 = 17,
  S2 = 18,
  S3 = 19,
  S4 = 20,
  S5 = 21,
  S6 = 22,
  S7 = 23,
  T8 = 24,
  T9 = 25,
  kLastFreeCpuRegister = 25,
  K0 = 26,
  K1 = 27,
  GP = 28,
  SP = 29,
  FP = 30,
  RA = 31,
  kNumberOfCpuRegisters = 32,
  kNoRegister = -1,
};


// Values for double-precision floating point registers.
enum FRegister {
  F0  =  0,
  F1  =  1,
  F2  =  2,
  F3  =  3,
  F4  =  4,
  F5  =  5,
  F6  =  6,
  F7  =  7,
  F8  =  8,
  F9  =  9,
  F10 = 10,
  F11 = 11,
  F12 = 12,
  F13 = 13,
  F14 = 14,
  F15 = 15,
  F16 = 16,
  F17 = 17,
  F18 = 18,
  F19 = 19,
  F20 = 20,
  F21 = 21,
  F22 = 22,
  F23 = 23,
  F24 = 24,
  F25 = 25,
  F26 = 26,
  F27 = 27,
  F28 = 28,
  F29 = 29,
  F30 = 30,
  F31 = 31,
  kNumberOfFRegisters = 32,
  kNoFRegister = -1,
};


// Architecture independent aliases.
typedef FRegister FpuRegister;
const FpuRegister FpuTMP = F0;
const int kNumberOfFpuRegisters = kNumberOfFRegisters;


// Register aliases.
const Register TMP = AT;  // Used as scratch register by assembler.
const Register CTX = S6;  // Caches current context in generated code.
const Register PP = S7;  // Caches object pool pointer in generated code.
const Register SPREG = SP;  // Stack pointer register.
const Register FPREG = FP;  // Frame pointer register.


// Values for the condition field.  // UNIMPLEMENTED.
enum Condition {
  kNoCondition = -1,
  kMaxCondition = 16,
};

}  // namespace dart

#endif  // VM_CONSTANTS_MIPS_H_
