v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
instruction-selector-x64.cc File Reference
Include dependency graph for instruction-selector-x64.cc:

Go to the source code of this file.

Classes

struct  v8::internal::compiler::ScaledIndexMatch
 
struct  v8::internal::compiler::BaseWithScaledIndexAndDisplacementMatch
 
class  v8::internal::compiler::X64OperandGeneratorT
 

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::compiler
 

Macros

#define RO_OP_T_LIST(V)
 
#define RR_OP_T_LIST_WEBASSEMBLY(V)
 
#define RR_OP_T_LIST(V)
 
#define RO_VISITOR(Name, opcode)
 
#define RR_VISITOR(Name, opcode)
 
#define VISIT_ATOMIC_BINOP(op)
 
#define VISIT_ATOMIC_BINOP(op)
 
#define VISIT_UNSUPPORTED_OP(op)
 

Functions

bool v8::internal::compiler::ValueFitsIntoImmediate (int64_t value)
 
bool v8::internal::compiler::CanBeImmediate (InstructionSelectorT *selector, OpIndex node)
 
int32_t v8::internal::compiler::GetImmediateIntegerValue (InstructionSelectorT *selector, OpIndex node)
 
bool v8::internal::compiler::MatchScaledIndex (InstructionSelectorT *selector, OpIndex node, OpIndex *index, int *scale, bool *power_of_two_plus_one)
 
std::optional< ScaledIndexMatch > v8::internal::compiler::TryMatchScaledIndex (InstructionSelectorT *selector, OpIndex node, bool allow_power_of_two_plus_one)
 
std::optional< ScaledIndexMatch > v8::internal::compiler::TryMatchScaledIndex32 (InstructionSelectorT *selector, OpIndex node, bool allow_power_of_two_plus_one)
 
std::optional< ScaledIndexMatch > v8::internal::compiler::TryMatchScaledIndex64 (InstructionSelectorT *selector, OpIndex node, bool allow_power_of_two_plus_one)
 
std::optional< BaseWithScaledIndexAndDisplacementMatch > v8::internal::compiler::TryMatchBaseWithScaledIndexAndDisplacement64ForWordBinop (InstructionSelectorT *selector, OpIndex left, OpIndex right, bool is_commutative)
 
std::optional< BaseWithScaledIndexAndDisplacementMatch > v8::internal::compiler::TryMatchBaseWithScaledIndexAndDisplacement64 (InstructionSelectorT *selector, OpIndex node)
 
std::optional< BaseWithScaledIndexAndDisplacementMatch > v8::internal::compiler::TryMatchBaseWithScaledIndexAndDisplacement32 (InstructionSelectorT *selector, OpIndex node)
 
static void v8::internal::compiler::VisitBinop (InstructionSelectorT *selector, OpIndex node, InstructionCode opcode, FlagsContinuationT *cont)
 
std::optional< int32_t > v8::internal::compiler::GetWord32Constant (InstructionSelectorT *selector, OpIndex node, bool allow_implicit_int64_truncation=TurboshaftAdapter::AllowsImplicitWord64ToWord32Truncation)
 
static void v8::internal::compiler::VisitBinop (InstructionSelectorT *selector, OpIndex node, InstructionCode opcode)
 
std::optional< uint64_t > v8::internal::compiler::TryGetRightWordConstant (InstructionSelectorT *selector, OpIndex node)
 

Macro Definition Documentation

◆ RO_OP_T_LIST

#define RO_OP_T_LIST ( V)

Definition at line 2791 of file instruction-selector-x64.cc.

◆ RO_VISITOR

#define RO_VISITOR ( Name,
opcode )
Value:
void InstructionSelectorT::Visit##Name(OpIndex node) { \
VisitRO(this, node, opcode); \
}

Definition at line 2863 of file instruction-selector-x64.cc.

◆ RR_OP_T_LIST

#define RR_OP_T_LIST ( V)
Value:
V(TruncateFloat64ToUint32, kSSEFloat64ToUint32 | MiscField::encode(0)) \
V(SignExtendWord32ToInt64, kX64Movsxlq) \
V(Float32RoundDown, kSSEFloat32Round | MiscField::encode(kRoundDown)) \
V(Float64RoundDown, kSSEFloat64Round | MiscField::encode(kRoundDown)) \
V(Float32RoundUp, kSSEFloat32Round | MiscField::encode(kRoundUp)) \
V(Float64RoundUp, kSSEFloat64Round | MiscField::encode(kRoundUp)) \
V(Float32RoundTruncate, kSSEFloat32Round | MiscField::encode(kRoundToZero)) \
V(Float64RoundTruncate, kSSEFloat64Round | MiscField::encode(kRoundToZero)) \
V(Float32RoundTiesEven, \
kSSEFloat32Round | MiscField::encode(kRoundToNearest)) \
V(Float64RoundTiesEven, \
kSSEFloat64Round | MiscField::encode(kRoundToNearest)) \
RR_OP_T_LIST_WEBASSEMBLY(V)
#define V(Name)

Definition at line 2848 of file instruction-selector-x64.cc.

◆ RR_OP_T_LIST_WEBASSEMBLY

#define RR_OP_T_LIST_WEBASSEMBLY ( V)

Definition at line 2845 of file instruction-selector-x64.cc.

◆ RR_VISITOR

#define RR_VISITOR ( Name,
opcode )
Value:
void InstructionSelectorT::Visit##Name(OpIndex node) { \
VisitRR(this, node, opcode); \
}

Definition at line 2871 of file instruction-selector-x64.cc.

◆ VISIT_ATOMIC_BINOP [1/2]

#define VISIT_ATOMIC_BINOP ( op)
Value:
void InstructionSelectorT::VisitWord32Atomic##op(OpIndex node) { \
VisitWord32AtomicBinaryOperation( \
node, kAtomic##op##Int8, kAtomic##op##Uint8, kAtomic##op##Int16, \
kAtomic##op##Uint16, kAtomic##op##Word32); \
}

Definition at line 4187 of file instruction-selector-x64.cc.

◆ VISIT_ATOMIC_BINOP [2/2]

#define VISIT_ATOMIC_BINOP ( op)
Value:
void InstructionSelectorT::VisitWord64Atomic##op(OpIndex node) { \
VisitWord64AtomicBinaryOperation(node, kAtomic##op##Uint8, \
kAtomic##op##Uint16, kAtomic##op##Word32, \
kX64Word64Atomic##op##Uint64); \
}

Definition at line 4187 of file instruction-selector-x64.cc.

◆ VISIT_UNSUPPORTED_OP

#define VISIT_UNSUPPORTED_OP ( op)
Value:
void InstructionSelectorT::Visit##op(OpIndex) { UNREACHABLE(); }
#define UNREACHABLE()
Definition logging.h:67

Definition at line 5954 of file instruction-selector-x64.cc.

Variable Documentation

◆ base

OpIndex base

Definition at line 760 of file instruction-selector-x64.cc.

◆ index

OptionalOpIndex index

Definition at line 761 of file instruction-selector-x64.cc.

◆ offset

int32_t offset

Definition at line 762 of file instruction-selector-x64.cc.