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

Go to the source code of this file.

Classes

class  v8::internal::compiler::Arm64OperandGeneratorT
 
class  v8::internal::compiler::turboshaft::CompareSequence
 
class  v8::internal::compiler::turboshaft::CompareChainNode
 

Namespaces

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

Macros

#define RR_OP_T_LIST(V)
 
#define RRR_OP_T_LIST(V)
 
#define RR_VISITOR(Name, opcode)
 
#define RRR_VISITOR(Name, opcode)
 
#define VISIT_ATOMIC_BINOP(op)
 
#define VISIT_ATOMIC_BINOP(op)
 

Enumerations

enum  v8::internal::compiler::ImmediateMode {
  v8::internal::compiler::kArithmeticImm , v8::internal::compiler::kShift32Imm , v8::internal::compiler::kShift64Imm , v8::internal::compiler::kLogical32Imm ,
  v8::internal::compiler::kLogical64Imm , v8::internal::compiler::kLoadStoreImm8 , v8::internal::compiler::kLoadStoreImm16 , v8::internal::compiler::kLoadStoreImm32 ,
  v8::internal::compiler::kLoadStoreImm64 , v8::internal::compiler::kConditionalCompareImm , v8::internal::compiler::kNoImmediate , v8::internal::compiler::kInt16Imm ,
  v8::internal::compiler::kInt16Imm_Unsigned , v8::internal::compiler::kInt16Imm_Negate , v8::internal::compiler::kInt16Imm_4ByteAligned , v8::internal::compiler::kShift32Imm ,
  v8::internal::compiler::kInt34Imm , v8::internal::compiler::kShift64Imm , v8::internal::compiler::kNoImmediate
}
 

Functions

void v8::internal::compiler::EmitLoad (InstructionSelectorT *selector, OpIndex node, InstructionCode opcode, ImmediateMode immediate_mode, MachineRepresentation rep, OptionalOpIndex output={})
 
std::tuple< InstructionCode, ImmediateModev8::internal::compiler::GetLoadOpcodeAndImmediate (MemoryRepresentation loaded_rep, RegisterRepresentation result_rep)
 
std::tuple< InstructionCode, ImmediateModev8::internal::compiler::GetLoadOpcodeAndImmediate (LoadRepresentation load_rep)
 
static std::optional< FlagsConditionv8::internal::compiler::turboshaft::GetFlagsCondition (OpIndex node, InstructionSelectorT *selector)
 
static std::optional< CompareChainNode * > v8::internal::compiler::turboshaft::FindCompareChain (OpIndex user, OpIndex node, InstructionSelectorT *selector, Zone *zone, ZoneVector< CompareChainNode * > &nodes)
 
void v8::internal::compiler::turboshaft::CombineFlagSettingOps (CompareChainNode *logic_node, InstructionSelectorT *selector, CompareSequence *sequence)
 
static std::optional< FlagsConditionv8::internal::compiler::turboshaft::TryMatchConditionalCompareChainShared (InstructionSelectorT *selector, Zone *zone, OpIndex node, CompareSequence *sequence)
 
static void v8::internal::compiler::turboshaft::VisitCompareChain (InstructionSelectorT *selector, OpIndex left_node, OpIndex right_node, RegisterRepresentation rep, InstructionCode opcode, ImmediateMode operand_mode, FlagsContinuationT *cont)
 
static bool v8::internal::compiler::turboshaft::TryMatchConditionalCompareChainBranch (InstructionSelectorT *selector, Zone *zone, OpIndex node, FlagsContinuationT *cont)
 
static bool v8::internal::compiler::turboshaft::TryMatchConditionalCompareChainSet (InstructionSelectorT *selector, Zone *zone, OpIndex node)
 
static void v8::internal::compiler::VisitLogical (InstructionSelectorT *selector, Zone *zone, OpIndex node, WordRepresentation rep, ArchOpcode opcode, bool left_can_cover, bool right_can_cover, ImmediateMode imm_mode)
 

Macro Definition Documentation

◆ RR_OP_T_LIST

#define RR_OP_T_LIST ( V)

Definition at line 2429 of file instruction-selector-arm64.cc.

◆ RR_VISITOR

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

Definition at line 2508 of file instruction-selector-arm64.cc.

◆ RRR_OP_T_LIST

#define RRR_OP_T_LIST ( V)
Value:
V(Int32Div, kArm64Idiv32) \
V(Int64Div, kArm64Idiv) \
V(Uint32Div, kArm64Udiv32) \
V(Uint64Div, kArm64Udiv) \
V(Int32Mod, kArm64Imod32) \
V(Int64Mod, kArm64Imod) \
V(Uint32Mod, kArm64Umod32) \
V(Uint64Mod, kArm64Umod) \
V(Float32Add, kArm64Float32Add) \
V(Float64Add, kArm64Float64Add) \
V(Float32Sub, kArm64Float32Sub) \
V(Float64Sub, kArm64Float64Sub) \
V(Float32Div, kArm64Float32Div) \
V(Float64Div, kArm64Float64Div) \
V(Float32Max, kArm64Float32Max) \
V(Float64Max, kArm64Float64Max) \
V(Float32Min, kArm64Float32Min) \
V(Float64Min, kArm64Float64Min) \
IF_WASM(V, I8x16Swizzle, kArm64I8x16Swizzle)
#define V(Name)

Definition at line 2487 of file instruction-selector-arm64.cc.

◆ RRR_VISITOR

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

Definition at line 2516 of file instruction-selector-arm64.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 4521 of file instruction-selector-arm64.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, \
kArm64Word64Atomic##op##Uint64); \
}

Definition at line 4521 of file instruction-selector-arm64.cc.

Variable Documentation

◆ base_

OpIndex base_ {}
private

Definition at line 281 of file instruction-selector-arm64.cc.

◆ binop_

const WordBinopOp& binop_
private

Definition at line 3521 of file instruction-selector-arm64.cc.

◆ bit_

unsigned bit_ = 0
private

Definition at line 3523 of file instruction-selector-arm64.cc.

◆ immediate_

int64_t immediate_
private

Definition at line 282 of file instruction-selector-arm64.cc.

◆ kCompareAndBranchOpcode

ArchOpcode kCompareAndBranchOpcode
staticconstexpr
Initial value:
=
kArm64CompareAndBranch32

Definition at line 3291 of file instruction-selector-arm64.cc.

◆ kSignBit

unsigned kSignBit = kWSignBit
staticconstexpr

Definition at line 3293 of file instruction-selector-arm64.cc.

◆ kTestAndBranchOpcode

ArchOpcode kTestAndBranchOpcode = kArm64TestAndBranch32
staticconstexpr

Definition at line 3290 of file instruction-selector-arm64.cc.

◆ matches_

bool matches_ = false
private

Definition at line 279 of file instruction-selector-arm64.cc.

◆ opcode_

ArchOpcode opcode_
private

Definition at line 283 of file instruction-selector-arm64.cc.

◆ selector_

InstructionSelectorT* selector_
private

Definition at line 280 of file instruction-selector-arm64.cc.