5#ifndef V8_WASM_BASELINE_PARALLEL_MOVE_H_
6#define V8_WASM_BASELINE_PARALLEL_MOVE_H_
90 DCHECK(CompatibleStackSlotTypes(dst.
kind(), src.kind()));
108 if (dst != src.reg())
MoveRegister(dst, src.reg(), src.kind());
109 }
else if (src.is_stack()) {
134 int32_t value = src.i32_const();
136 if (half ==
kHighWord) value = value >> 31;
146 if (src.is_gp_pair()) {
152 if (src.is_fp_pair()) {
154 if (dst.
low() != src.
low()) {
269 asm_->
Move(dst, move->src, move->kind);
void Move(LiftoffRegister dst, LiftoffRegister src, ValueKind)
constexpr Register set(Register reg)
constexpr LiftoffRegister clear(LiftoffRegister reg)
bool has(LiftoffRegister reg) const
constexpr bool is_empty() const
LiftoffRegister high() const
constexpr bool is_fp() const
constexpr RegClass reg_class() const
constexpr bool is_gp_pair() const
constexpr bool is_fp_pair() const
LiftoffRegister low() const
LiftoffRegister reg() const
int32_t i32_const() const
char register_loads_[kAfterMaxLiftoffRegCode *sizeof(RegisterLoad)]
void MoveRegister(LiftoffRegister dst, LiftoffRegister src, ValueKind kind)
void ClearExecutedMove(LiftoffRegister dst)
RegisterLoad * register_load(LiftoffRegister reg)
V8_INLINE ~ParallelMove()
LiftoffAssembler *const asm_
ParallelMove(LiftoffAssembler *wasm_asm)
V8_INLINE void LoadIntoRegister(LiftoffRegister dst, const VarState &src)
void LoadI64HalfIntoRegister(LiftoffRegister dst, const VarState &src, RegPairHalf half)
void TransferToStack(int dst_offset, const VarState &src)
void LoadStackSlot(LiftoffRegister dst, int stack_offset, ValueKind kind)
V8_NOINLINE V8_PRESERVE_MOST void ExecuteLoads()
char register_moves_[kAfterMaxLiftoffRegCode *sizeof(RegisterMove)]
LiftoffRegList move_dst_regs_
void ExecuteMove(LiftoffRegister dst)
void LoadI64HalfStackSlot(LiftoffRegister dst, int offset, RegPairHalf half)
ParallelMove & operator=(const ParallelMove &)=delete
int src_reg_use_count_[kAfterMaxLiftoffRegCode]
int * src_reg_use_count(LiftoffRegister reg)
LiftoffRegList load_dst_regs_
V8_INLINE void Transfer(const VarState &dst, const VarState &src)
RegisterMove * register_move(LiftoffRegister reg)
V8_NOINLINE V8_PRESERVE_MOST void ExecuteMoves()
ParallelMove(const ParallelMove &)=delete
void LoadConstant(LiftoffRegister dst, ValueKind kind, int32_t constant)
static constexpr RegClass reg_class_for(ValueKind kind)
static constexpr int kAfterMaxLiftoffRegCode
constexpr bool is_object_reference(ValueKind kind)
static constexpr bool kNeedI64RegPair
#define DCHECK_NE(v1, v2)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)
RegisterLoad(LoadKind load_kind, ValueKind kind, int32_t value)
static RegisterLoad HalfStack(int32_t offset, RegPairHalf half)
static RegisterLoad Stack(int32_t offset, ValueKind kind)
static RegisterLoad Nop()
static RegisterLoad Const(ValueKind kind, int32_t constant)
constexpr RegisterMove(LiftoffRegister src, ValueKind kind)
#define V8_UNLIKELY(condition)