V8 Project
v8::internal::DwVfpRegister Struct Reference

#include <assembler-arm.h>

+ Collaboration diagram for v8::internal::DwVfpRegister:

Public Member Functions

bool is_valid () const
 
bool is (DwVfpRegister reg) const
 
int code () const
 
int bit () const
 
void split_code (int *vm, int *m) const
 

Static Public Member Functions

static int NumRegisters ()
 
static int NumReservedRegisters ()
 
static int NumAllocatableRegisters ()
 
static int NumAllocatableAliasedRegisters ()
 
static int ToAllocationIndex (DwVfpRegister reg)
 
static const char * AllocationIndexToString (int index)
 
static DwVfpRegister FromAllocationIndex (int index)
 
static DwVfpRegister from_code (int code)
 

Public Attributes

int code_
 

Static Public Attributes

static const int kMaxNumRegisters = 32
 
static const int kNumReservedRegisters = 2
 
static const int kMaxNumAllocatableRegisters
 
static const int kSizeInBytes = 8
 

Detailed Description

Definition at line 203 of file assembler-arm.h.

Member Function Documentation

◆ AllocationIndexToString()

static const char* v8::internal::DwVfpRegister::AllocationIndexToString ( int  index)
static

Referenced by v8::internal::Deoptimizer::DoTranslateCommand(), v8::internal::Deoptimizer::DoTranslateObject(), v8::internal::compiler::operator<<(), and v8::internal::LOperand::PrintTo().

+ Here is the caller graph for this function:

◆ bit()

int v8::internal::DwVfpRegister::bit ( ) const
inline

Definition at line 243 of file assembler-arm.h.

243  {
244  DCHECK(is_valid());
245  return 1 << code_;
246  }
#define DCHECK(condition)
Definition: logging.h:205

References code_, DCHECK, and is_valid().

+ Here is the call graph for this function:

◆ code()

int v8::internal::DwVfpRegister::code ( ) const
inline

Definition at line 239 of file assembler-arm.h.

239  {
240  DCHECK(is_valid());
241  return code_;
242  }

References code_, DCHECK, and is_valid().

Referenced by from_code(), and ToAllocationIndex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ from_code()

static DwVfpRegister v8::internal::DwVfpRegister::from_code ( int  code)
inlinestatic

Definition at line 230 of file assembler-arm.h.

230  {
231  DwVfpRegister r = { code };
232  return r;
233  }

References code().

Referenced by FromAllocationIndex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FromAllocationIndex()

DwVfpRegister v8::internal::DwVfpRegister::FromAllocationIndex ( int  index)
inlinestatic

Definition at line 89 of file assembler-arm-inl.h.

89  {
90  DCHECK(index >= 0 && index < NumAllocatableRegisters());
91  DCHECK(kScratchDoubleReg.code() - kDoubleRegZero.code() ==
93  if (index >= kDoubleRegZero.code()) {
94  return from_code(index + kNumReservedRegisters);
95  }
96  return from_code(index);
97 }
#define kDoubleRegZero
#define kScratchDoubleReg
static const int kNumReservedRegisters
static DwVfpRegister from_code(int code)

References DCHECK, from_code(), kDoubleRegZero, kNumReservedRegisters, kScratchDoubleReg, and NumAllocatableRegisters().

Referenced by v8::internal::LCodeGen::RestoreCallerDoubles(), v8::internal::LCodeGen::SaveCallerDoubles(), v8::internal::compiler::InstructionOperandConverter::ToDoubleRegister(), and v8::internal::LCodeGen::ToDoubleRegister().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is()

bool v8::internal::DwVfpRegister::is ( DwVfpRegister  reg) const
inline

Definition at line 238 of file assembler-arm.h.

238 { return code_ == reg.code_; }

References code_.

Referenced by v8::internal::LCodeGen::EmitNumberUntagD(), and ToAllocationIndex().

+ Here is the caller graph for this function:

◆ is_valid()

bool v8::internal::DwVfpRegister::is_valid ( ) const
inline

Definition at line 235 of file assembler-arm.h.

235  {
236  return 0 <= code_ && code_ < kMaxNumRegisters;
237  }
static const int kMaxNumRegisters

References code_, and kMaxNumRegisters.

Referenced by bit(), code(), and split_code().

+ Here is the caller graph for this function:

◆ NumAllocatableAliasedRegisters()

int v8::internal::DoubleRegister::NumAllocatableAliasedRegisters ( )
inlinestatic

◆ NumAllocatableRegisters()

int v8::internal::DoubleRegister::NumAllocatableRegisters ( )
inlinestatic

Definition at line 68 of file assembler-arm-inl.h.

68  {
70 }

References kNumReservedRegisters, and NumRegisters().

Referenced by v8::internal::Deoptimizer::FillInputFrame(), FromAllocationIndex(), and v8::internal::StandardFrame::IterateCompiledFrame().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NumRegisters()

int v8::internal::DoubleRegister::NumRegisters ( )
inlinestatic

Definition at line 58 of file assembler-arm-inl.h.

58  {
59  return CpuFeatures::IsSupported(VFP32DREGS) ? 32 : 16;
60 }
static bool IsSupported(CpuFeature f)
Definition: assembler.h:184

References v8::internal::CpuFeatures::IsSupported(), and v8::internal::VFP32DREGS.

Referenced by NumAllocatableRegisters().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NumReservedRegisters()

int v8::internal::DwVfpRegister::NumReservedRegisters ( )
inlinestatic

Definition at line 63 of file assembler-arm-inl.h.

63  {
64  return kNumReservedRegisters;
65 }

References kNumReservedRegisters.

◆ split_code()

void v8::internal::DwVfpRegister::split_code ( int vm,
int m 
) const
inline

Definition at line 247 of file assembler-arm.h.

247  {
248  DCHECK(is_valid());
249  *m = (code_ & 0x10) >> 4;
250  *vm = code_ & 0x0F;
251  }

References code_, DCHECK, and is_valid().

+ Here is the call graph for this function:

◆ ToAllocationIndex()

int v8::internal::DwVfpRegister::ToAllocationIndex ( DwVfpRegister  reg)
inlinestatic

Definition at line 79 of file assembler-arm-inl.h.

79  {
80  DCHECK(!reg.is(kDoubleRegZero));
81  DCHECK(!reg.is(kScratchDoubleReg));
82  if (reg.code() > kDoubleRegZero.code()) {
83  return reg.code() - kNumReservedRegisters;
84  }
85  return reg.code();
86 }

References code(), DCHECK, is(), kDoubleRegZero, kNumReservedRegisters, and kScratchDoubleReg.

Referenced by v8::internal::compiler::OperandGenerator::DefineAsFixed(), and v8::internal::compiler::OperandGenerator::UseFixed().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ code_

int v8::internal::DwVfpRegister::code_

Definition at line 253 of file assembler-arm.h.

Referenced by bit(), code(), is(), v8::internal::LowDwVfpRegister::is(), is_valid(), and split_code().

◆ kMaxNumAllocatableRegisters

const int v8::internal::DwVfpRegister::kMaxNumAllocatableRegisters
static
Initial value:

Definition at line 210 of file assembler-arm.h.

Referenced by v8::internal::LOperand::PrintTo().

◆ kMaxNumRegisters

const int v8::internal::DwVfpRegister::kMaxNumRegisters = 32
static

Definition at line 204 of file assembler-arm.h.

Referenced by v8::internal::Deoptimizer::CopyDoubleRegisters(), and is_valid().

◆ kNumReservedRegisters

const int v8::internal::DwVfpRegister::kNumReservedRegisters = 2
static

◆ kSizeInBytes

const int v8::internal::DwVfpRegister::kSizeInBytes = 8
static

Definition at line 212 of file assembler-arm.h.


The documentation for this struct was generated from the following files: