5 #ifndef V8_MIPS_CONSTANTS_H_
6 #define V8_MIPS_CONSTANTS_H_
10 #define UNIMPLEMENTED_MIPS() \
11 v8::internal::PrintF("%s, \tline %d: \tfunction %s not implemented. \n", \
12 __FILE__, __LINE__, __func__)
14 #define UNIMPLEMENTED_MIPS()
17 #define UNSUPPORTED_MIPS() v8::internal::PrintF("Unsupported instruction.\n")
26 #ifdef _MIPS_ARCH_MIPS32R2
28 #elif _MIPS_ARCH_MIPS32R6
30 #elif _MIPS_ARCH_LOONGSON
34 #elif _MIPS_ARCH_MIPS32RX
48 #if defined(V8_TARGET_LITTLE_ENDIAN)
50 #elif defined(V8_TARGET_BIG_ENDIAN)
53 #error Unknown endianness
62 #if defined(FPU_MODE_FP32)
64 #elif defined(FPU_MODE_FP64)
66 #elif defined(FPU_MODE_FPXX)
72 #if(defined(__mips_hard_float) && __mips_hard_float != 0)
76 #elif(defined(__mips_soft_float) && __mips_soft_float != 0)
85 #if defined(V8_TARGET_LITTLE_ENDIAN)
86 const uint32_t kHoleNanUpper32Offset = 4;
87 const uint32_t kHoleNanLower32Offset = 0;
88 #elif defined(V8_TARGET_BIG_ENDIAN)
89 const uint32_t kHoleNanUpper32Offset = 0;
90 const uint32_t kHoleNanLower32Offset = 4;
92 #error Unknown endianness
96 #define IsFp64Mode() \
99 #define IsFp64Mode() \
100 (CpuFeatures::IsSupported(FP64FPU))
103 #ifndef _MIPS_ARCH_MIPS32RX
104 #define IsMipsArchVariant(check) \
105 (kArchVariant == check)
107 #define IsMipsArchVariant(check) \
108 (CpuFeatures::IsSupported(check))
112 #define __STDC_FORMAT_MACROS
113 #include <inttypes.h>
147 static_cast<uint64_t
>(
static_cast<uint64_t
>(1) << 63) - 1;
185 static const char*
Name(
int reg);
207 static const char*
Name(
int reg);
382 MOVZ = ((1 << 3) + 2),
383 MOVN = ((1 << 3) + 3),
384 BREAK = ((1 << 3) + 5),
396 ADD = ((4 << 3) + 0),
398 SUB = ((4 << 3) + 2),
400 AND = ((4 << 3) + 4),
412 TEQ = ((6 << 3) + 4),
431 CLZ = ((4 << 3) + 0),
452 BC1 = ((1 << 3) + 0) << 21,
453 S = ((2 << 3) + 0) << 21,
454 D = ((2 << 3) + 1) << 21,
455 W = ((2 << 3) + 4) << 21,
456 L = ((2 << 3) + 5) << 21,
457 PS = ((2 << 3) + 6) << 21,
545 SEL = ((2 << 3) + 0),
741 return *
reinterpret_cast<const Instr*
>(
this);
746 *
reinterpret_cast<Instr*
>(
this) = value;
750 inline int Bit(
int nr)
const {
773 return static_cast<Opcode>(
static int Number(const char *name)
static const char * Name(int reg)
static const RegisterAlias aliases_[]
static const char * names_[kNumFPURegisters]
Instr InstructionBits() const
void SetInstructionBits(Instr value)
int FunctionValue() const
Opcode OpcodeValue() const
int FunctionFieldRaw() const
int Bits(int hi, int lo) const
bool IsLinkingInstruction() const
int32_t Imm21Value() const
Opcode OpcodeFieldRaw() const
int RsFieldRawNoAssert() const
static Instruction * At(byte *pc)
int32_t Imm26Value() const
bool IsForbiddenInBranchDelay() const
Type InstructionType() const
int SecondaryValue() const
DISALLOW_IMPLICIT_CONSTRUCTORS(Instruction)
int32_t Imm16Value() const
static const int32_t kMaxValue
static int Number(const char *name)
static const RegisterAlias aliases_[]
static const char * names_[kNumRegisters]
static const int32_t kMinValue
static const char * Name(int reg)
static const FpuMode kFpuMode
const bool IsMipsSoftFloatABI
static const ArchVariants kArchVariant
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in name
#define DCHECK(condition)
const Instr kSwRegFpNegOffsetPattern
Hint NegateHint(Hint ignored)
const Instr kPopInstruction
const int32_t kPrefHintLoadStreamed
const int kInvalidFPUControlRegister
Condition CommuteCondition(Condition cond)
CheckForInexactConversion
@ kCheckForInexactConversion
@ kDontCheckForInexactConversion
const int32_t kPrefHintStore
const int32_t kPrefHintStoreRetained
const Instr rtCallRedirInstr
const int32_t kPrefHintLoad
const uint32_t kMaxStopCode
const uint32_t kMaxWatchpointCode
const int32_t kPrefHintLoadRetained
const uint32_t kFCSRUnderflowFlagMask
const Instr kLwSwInstrArgumentMask
const int32_t kPrefHintWritebackInvalidate
const uint32_t kFCSRExceptionFlagMask
const int kNumFPURegisters
const int kFunctionFieldMask
const Instr kLwSwOffsetMask
const int kInvalidFPURegister
const Instr kSwRegFpOffsetPattern
const int kNumSimuRegisters
const int kInvalidRegister
const uint32_t kFCSRInvalidOpFlagMask
Condition NegateCondition(Condition cond)
const Instr kLwRegFpNegOffsetPattern
const uint32_t kFCSROverflowFlagMask
const int32_t kPrefHintPrepareForStore
const int kCArgsSlotsSize
const uint64_t kFPU64InvalidResult
const uint32_t kFPURoundingModeMask
STATIC_ASSERT(sizeof(CPURegister)==sizeof(Register))
const uint32_t kFCSRInexactFlagMask
const int kBranchReturnOffset
const uint32_t kFCSRInvalidOpFlagBit
const uint32_t kFPUInvalidResult
const uint32_t kFCSRDivideByZeroFlagMask
const uint32_t kFCSROverflowFlagBit
const uint32_t kFCSRDivideByZeroFlagBit
const Instr kPushRegPattern
const Instr kLwRegFpOffsetPattern
const Instr kPushInstruction
const Instr kPopRegPattern
const uint32_t kFCSRUnderflowFlagBit
const uint32_t kFCSRFlagMask
const int kJSArgsSlotsSize
const Instr kLwSwInstrTypeMask
const uint32_t kFCSRInexactFlagBit
const int32_t kPrefHintStoreStreamed
const int kBArgsSlotsSize
Debugger support for the V8 JavaScript engine.