v8  3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
constants-mips.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  Registers
 
struct  Registers::RegisterAlias
 
class  FPURegisters
 
struct  FPURegisters::RegisterAlias
 
class  Instruction
 

Namespaces

 v8
 
 v8::internal
 

Macros

#define UNIMPLEMENTED_MIPS()
 
#define UNSUPPORTED_MIPS()   v8::internal::PrintF("Unsupported instruction.\n")
 

Enumerations

enum  ArchVariants { kMips32r2, kMips32r1, kLoongson }
 
enum  SoftwareInterruptCodes { kCallRtRedirected = 0x10, kBreakpoint = 0x20, kStopCode = 1 << 23, call_rt_redirected = 0xfffff }
 
enum  Opcode {
  AND = 0 << 21, EOR = 1 << 21, SUB = 2 << 21, RSB = 3 << 21,
  ADD = 4 << 21, ADC = 5 << 21, SBC = 6 << 21, RSC = 7 << 21,
  TST = 8 << 21, TEQ = 9 << 21, CMP = 10 << 21, CMN = 11 << 21,
  ORR = 12 << 21, MOV = 13 << 21, BIC = 14 << 21, MVN = 15 << 21,
  SPECIAL = 0 << kOpcodeShift, REGIMM = 1 << kOpcodeShift, J = ((0 << 3) + 2) << kOpcodeShift, JAL = ((0 << 3) + 3) << kOpcodeShift,
  BEQ = ((0 << 3) + 4) << kOpcodeShift, BNE = ((0 << 3) + 5) << kOpcodeShift, BLEZ = ((0 << 3) + 6) << kOpcodeShift, BGTZ = ((0 << 3) + 7) << kOpcodeShift,
  ADDI = ((1 << 3) + 0) << kOpcodeShift, ADDIU = ((1 << 3) + 1) << kOpcodeShift, SLTI = ((1 << 3) + 2) << kOpcodeShift, SLTIU = ((1 << 3) + 3) << kOpcodeShift,
  ANDI = ((1 << 3) + 4) << kOpcodeShift, ORI = ((1 << 3) + 5) << kOpcodeShift, XORI = ((1 << 3) + 6) << kOpcodeShift, LUI = ((1 << 3) + 7) << kOpcodeShift,
  COP1 = ((2 << 3) + 1) << kOpcodeShift, BEQL = ((2 << 3) + 4) << kOpcodeShift, BNEL = ((2 << 3) + 5) << kOpcodeShift, BLEZL = ((2 << 3) + 6) << kOpcodeShift,
  BGTZL = ((2 << 3) + 7) << kOpcodeShift, SPECIAL2 = ((3 << 3) + 4) << kOpcodeShift, SPECIAL3 = ((3 << 3) + 7) << kOpcodeShift, LB = ((4 << 3) + 0) << kOpcodeShift,
  LH = ((4 << 3) + 1) << kOpcodeShift, LWL = ((4 << 3) + 2) << kOpcodeShift, LW = ((4 << 3) + 3) << kOpcodeShift, LBU = ((4 << 3) + 4) << kOpcodeShift,
  LHU = ((4 << 3) + 5) << kOpcodeShift, LWR = ((4 << 3) + 6) << kOpcodeShift, SB = ((5 << 3) + 0) << kOpcodeShift, SH = ((5 << 3) + 1) << kOpcodeShift,
  SWL = ((5 << 3) + 2) << kOpcodeShift, SW = ((5 << 3) + 3) << kOpcodeShift, SWR = ((5 << 3) + 6) << kOpcodeShift, LWC1 = ((6 << 3) + 1) << kOpcodeShift,
  LDC1 = ((6 << 3) + 5) << kOpcodeShift, SWC1 = ((7 << 3) + 1) << kOpcodeShift, SDC1 = ((7 << 3) + 5) << kOpcodeShift
}
 
enum  SecondaryField {
  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), JR = ((1 << 3) + 0),
  JALR = ((1 << 3) + 1), MOVZ = ((1 << 3) + 2), MOVN = ((1 << 3) + 3), BREAK = ((1 << 3) + 5),
  MFHI = ((2 << 3) + 0), MFLO = ((2 << 3) + 2), MULT = ((3 << 3) + 0), MULTU = ((3 << 3) + 1),
  DIV = ((3 << 3) + 2), DIVU = ((3 << 3) + 3), ADD = 4 << 21, ADDU = ((4 << 3) + 1),
  SUB = 2 << 21, SUBU = ((4 << 3) + 3), AND = 0 << 21, OR = ((4 << 3) + 5),
  XOR = ((4 << 3) + 6), NOR = ((4 << 3) + 7), SLT = ((5 << 3) + 2), SLTU = ((5 << 3) + 3),
  TGE = ((6 << 3) + 0), TGEU = ((6 << 3) + 1), TLT = ((6 << 3) + 2), TLTU = ((6 << 3) + 3),
  TEQ = 9 << 21, TNE = ((6 << 3) + 6), MUL = ((0 << 3) + 2), CLZ = 1 << 4,
  CLO = ((4 << 3) + 1), EXT = ((0 << 3) + 0), INS = ((0 << 3) + 4), BLTZ = ((0 << 3) + 0) << 16,
  BGEZ = ((0 << 3) + 1) << 16, BLTZAL = ((2 << 3) + 0) << 16, BGEZAL = ((2 << 3) + 1) << 16, MFC1 = ((0 << 3) + 0) << 21,
  CFC1 = ((0 << 3) + 2) << 21, MFHC1 = ((0 << 3) + 3) << 21, MTC1 = ((0 << 3) + 4) << 21, CTC1 = ((0 << 3) + 6) << 21,
  MTHC1 = ((0 << 3) + 7) << 21, BC1 = ((1 << 3) + 0) << 21, S = 1 << 20, D = ((2 << 3) + 1) << 21,
  W = 1 << 21, L = 1 << 20, PS = ((2 << 3) + 6) << 21, ROUND_L_S = ((1 << 3) + 0),
  TRUNC_L_S = ((1 << 3) + 1), CEIL_L_S = ((1 << 3) + 2), FLOOR_L_S = ((1 << 3) + 3), ROUND_W_S = ((1 << 3) + 4),
  TRUNC_W_S = ((1 << 3) + 5), CEIL_W_S = ((1 << 3) + 6), FLOOR_W_S = ((1 << 3) + 7), CVT_D_S = ((4 << 3) + 1),
  CVT_W_S = ((4 << 3) + 4), CVT_L_S = ((4 << 3) + 5), CVT_PS_S = ((4 << 3) + 6), ADD_D = ((0 << 3) + 0),
  SUB_D = ((0 << 3) + 1), MUL_D = ((0 << 3) + 2), DIV_D = ((0 << 3) + 3), SQRT_D = ((0 << 3) + 4),
  ABS_D = ((0 << 3) + 5), MOV_D = ((0 << 3) + 6), NEG_D = ((0 << 3) + 7), ROUND_L_D = ((1 << 3) + 0),
  TRUNC_L_D = ((1 << 3) + 1), CEIL_L_D = ((1 << 3) + 2), FLOOR_L_D = ((1 << 3) + 3), ROUND_W_D = ((1 << 3) + 4),
  TRUNC_W_D = ((1 << 3) + 5), CEIL_W_D = ((1 << 3) + 6), FLOOR_W_D = ((1 << 3) + 7), CVT_S_D = ((4 << 3) + 0),
  CVT_W_D = ((4 << 3) + 4), CVT_L_D = ((4 << 3) + 5), C_F_D = ((6 << 3) + 0), C_UN_D = ((6 << 3) + 1),
  C_EQ_D = ((6 << 3) + 2), C_UEQ_D = ((6 << 3) + 3), C_OLT_D = ((6 << 3) + 4), C_ULT_D = ((6 << 3) + 5),
  C_OLE_D = ((6 << 3) + 6), C_ULE_D = ((6 << 3) + 7), CVT_S_W = ((4 << 3) + 0), CVT_D_W = ((4 << 3) + 1),
  CVT_S_L = ((4 << 3) + 0), CVT_D_L = ((4 << 3) + 1), NULLSF = 0
}
 
enum  Condition {
  kNoCondition = -1, eq = 0 << 28, ne = 1 << 28, cs = 2 << 28,
  cc = 3 << 28, mi = 4 << 28, pl = 5 << 28, vs = 6 << 28,
  vc = 7 << 28, hi = 8 << 28, ls = 9 << 28, ge = 10 << 28,
  lt = 11 << 28, gt = 12 << 28, le = 13 << 28, al = 14 << 28,
  kSpecialCondition = 15 << 28, kNumberOfConditions = 16, hs = cs, lo = cc,
  no_condition = -1, overflow = 0, no_overflow = 1, below = 2,
  above_equal = 3, equal = 4, not_equal = 5, below_equal = 6,
  above = 7, negative = 8, positive = 9, parity_even = 10,
  parity_odd = 11, less = 12, greater_equal = 13, less_equal = 14,
  greater = 15, carry = below, not_carry = above_equal, zero = equal,
  not_zero = not_equal, sign = negative, not_sign = positive, kNoCondition = -1,
  overflow = 0, no_overflow = 1, Uless = 2, Ugreater_equal = 3,
  equal = 4, not_equal = 5, Uless_equal = 6, Ugreater = 7,
  negative = 8, positive = 9, parity_even = 10, parity_odd = 11,
  less = 12, greater_equal = 13, less_equal = 14, greater = 15,
  cc_always = 16, carry = below, not_carry = above_equal, zero = equal,
  eq = 0 << 28, not_zero = not_equal, ne = 1 << 28, nz = not_equal,
  sign = negative, not_sign = positive, mi = 4 << 28, pl = 5 << 28,
  hi = 8 << 28, ls = 9 << 28, ge = 10 << 28, lt = 11 << 28,
  gt = 12 << 28, le = 13 << 28, hs = cs, lo = cc,
  al = 14 << 28, cc_default = kNoCondition, no_condition = -1, overflow = 0,
  no_overflow = 1, below = 2, above_equal = 3, equal = 4,
  not_equal = 5, below_equal = 6, above = 7, negative = 8,
  positive = 9, parity_even = 10, parity_odd = 11, less = 12,
  greater_equal = 13, less_equal = 14, greater = 15, always = 16,
  never = 17, carry = below, not_carry = above_equal, zero = equal,
  not_zero = not_equal, sign = negative, not_sign = positive, last_condition = greater
}
 
enum  FPUCondition {
  kNoFPUCondition = -1, F = 0, UN = 1, EQ = 2,
  UEQ = 3, OLT = 4, ULT = 5, OLE = 6,
  ULE = 7
}
 
enum  FPURoundingMode {
  RN = 0 << 22, RZ = 3 << 22, RP = 1 << 22, RM = 2 << 22,
  kRoundToNearest = RN, kRoundToZero = RZ, kRoundToPlusInf = RP, kRoundToMinusInf = RM
}
 
enum  CheckForInexactConversion { kCheckForInexactConversion, kDontCheckForInexactConversion, kCheckForInexactConversion, kDontCheckForInexactConversion }
 
enum  Hint { no_hint = 0, no_hint = 0 }
 

Functions

 STATIC_ASSERT (kMaxWatchpointCode< kMaxStopCode)
 
Condition NegateCondition (Condition cond)
 
Condition ReverseCondition (Condition cond)
 
Hint NegateHint (Hint ignored)
 

Variables

const bool IsMipsSoftFloatABI = true
 
const int kInvalidRegister = -1
 
const int kNumSimuRegisters = 35
 
const int kNumFPURegisters = 32
 
const int kInvalidFPURegister = -1
 
const int kFCSRRegister = 31
 
const int kInvalidFPUControlRegister = -1
 
const uint32_t kFPUInvalidResult = (uint32_t) (1 << 31) - 1
 
const uint32_t kFCSRInexactFlagBit = 2
 
const uint32_t kFCSRUnderflowFlagBit = 3
 
const uint32_t kFCSROverflowFlagBit = 4
 
const uint32_t kFCSRDivideByZeroFlagBit = 5
 
const uint32_t kFCSRInvalidOpFlagBit = 6
 
const uint32_t kFCSRInexactFlagMask = 1 << kFCSRInexactFlagBit
 
const uint32_t kFCSRUnderflowFlagMask = 1 << kFCSRUnderflowFlagBit
 
const uint32_t kFCSROverflowFlagMask = 1 << kFCSROverflowFlagBit
 
const uint32_t kFCSRDivideByZeroFlagMask = 1 << kFCSRDivideByZeroFlagBit
 
const uint32_t kFCSRInvalidOpFlagMask = 1 << kFCSRInvalidOpFlagBit
 
const uint32_t kFCSRFlagMask
 
const uint32_t kFCSRExceptionFlagMask = kFCSRFlagMask ^ kFCSRInexactFlagMask
 
const uint32_t kMaxWatchpointCode = 31
 
const int kOpcodeShift = 26
 
const int kOpcodeBits = 6
 
const int kRsShift = 21
 
const int kRsBits = 5
 
const int kRtShift = 16
 
const int kRtBits = 5
 
const int kRdShift = 11
 
const int kRdBits = 5
 
const int kSaShift = 6
 
const int kSaBits = 5
 
const int kFunctionShift = 0
 
const int kFunctionBits = 6
 
const int kLuiShift = 16
 
const int kImm16Shift = 0
 
const int kImm16Bits = 16
 
const int kImm26Shift = 0
 
const int kImm26Bits = 26
 
const int kImm28Shift = 0
 
const int kImm28Bits = 28
 
const int kImmFieldShift = 2
 
const int kFsShift = 11
 
const int kFsBits = 5
 
const int kFtShift = 16
 
const int kFtBits = 5
 
const int kFdShift = 6
 
const int kFdBits = 5
 
const int kFCccShift = 8
 
const int kFCccBits = 3
 
const int kFBccShift = 18
 
const int kFBccBits = 3
 
const int kFBtrueShift = 16
 
const int kFBtrueBits = 1
 
const int kOpcodeMask = ((1 << kOpcodeBits) - 1) << kOpcodeShift
 
const int kImm16Mask = ((1 << kImm16Bits) - 1) << kImm16Shift
 
const int kImm26Mask = ((1 << kImm26Bits) - 1) << kImm26Shift
 
const int kImm28Mask = ((1 << kImm28Bits) - 1) << kImm28Shift
 
const int kRsFieldMask = ((1 << kRsBits) - 1) << kRsShift
 
const int kRtFieldMask = ((1 << kRtBits) - 1) << kRtShift
 
const int kRdFieldMask = ((1 << kRdBits) - 1) << kRdShift
 
const int kSaFieldMask = ((1 << kSaBits) - 1) << kSaShift
 
const int kFunctionFieldMask = ((1 << kFunctionBits) - 1) << kFunctionShift
 
const int kHiMask = 0xffff << 16
 
const int kLoMask = 0xffff
 
const int kSignMask = 0x80000000
 
const int kJumpAddrMask = (1 << (kImm26Bits + kImmFieldShift)) - 1
 
const uint32_t kFPURoundingModeMask = 3 << 0
 
const Instr kPushInstruction
 
const Instr kLwRegFpOffsetPattern
 
const Instr kSwRegFpOffsetPattern
 
const Instr kLwRegFpNegOffsetPattern
 
const Instr kSwRegFpNegOffsetPattern
 
const Instr kRtMask
 
const Instr kLwSwInstrTypeMask
 
const Instr kLwSwInstrArgumentMask
 
const Instr kLwSwOffsetMask
 
const Instr rtCallRedirInstr = SPECIAL | BREAK | call_rt_redirected << 6
 
const Instr nopInstr = 0
 
const int kCArgSlotCount = 4
 
const int kCArgsSlotsSize = kCArgSlotCount * Instruction::kInstrSize
 
const int kJSArgsSlotsSize = 0 * Instruction::kInstrSize
 
const int kBArgsSlotsSize = 0 * Instruction::kInstrSize
 
const int kBranchReturnOffset = 2 * Instruction::kInstrSize
 

Macro Definition Documentation

#define UNIMPLEMENTED_MIPS ( )

Definition at line 37 of file constants-mips.h.

#define UNSUPPORTED_MIPS ( )    v8::internal::PrintF("Unsupported instruction.\n")

Definition at line 40 of file constants-mips.h.

Enumeration Type Documentation

Enumerator
kMips32r2 
kMips32r1 
kLoongson 

Definition at line 42 of file constants-mips.h.

Variable Documentation

const bool IsMipsSoftFloatABI = true

Definition at line 68 of file constants-mips.h.