Lines Matching defs:kind
38 ValueKind kind;
39 constexpr RegisterMove(LiftoffRegister src, ValueKind kind)
40 : src(src), kind(kind) {}
53 ValueKind kind;
54 int32_t value; // i32 constant value or stack offset, depending on kind.
58 if (constant.type().kind() == kI32) {
61 DCHECK_EQ(kI64, constant.type().kind());
66 static RegisterLoad Stack(int32_t offset, ValueKind kind) {
67 return {kStack, kind, offset};
78 RegisterLoad(LoadKind load_kind, ValueKind kind, int32_t value)
79 : load_kind(load_kind), kind(kind), value(value) {}
98 DCHECK(CheckCompatibleStackSlotTypes(dst.kind(), src.kind()));
111 asm_->MoveStackValue(dst.offset(), src.offset(), src.kind());
115 asm_->Spill(dst.offset(), src.reg(), src.kind());
128 LoadStackSlot(dst, src_offset, src.kind());
132 if (dst != src.reg()) MoveRegister(dst, src.reg(), src.kind());
146 DCHECK_EQ(kI64, src.kind());
166 void MoveRegister(LiftoffRegister dst, LiftoffRegister src, ValueKind kind) {
169 DCHECK_EQ(reg_class_for(kind), src.reg_class());
171 DCHECK_EQ(kI64, kind);
177 DCHECK_EQ(kS128, kind);
187 DCHECK_IMPLIES(!dst.is_fp(), register_move(dst)->kind == kind);
191 if (kind == kF64) register_move(dst)->kind = kF64;
196 *register_move(dst) = {src, kind};
203 DCHECK_EQ(kI64, value.type().kind());
215 ValueKind kind) {
224 DCHECK_EQ(kI64, kind);
230 DCHECK_EQ(kS128, kind);
234 *register_load(dst.low()) = RegisterLoad::Stack(stack_offset, kind);
237 *register_load(dst) = RegisterLoad::Stack(stack_offset, kind);
285 asm_->Move(dst, move->src, move->kind);
319 last_spill_offset += LiftoffAssembler::SlotSizeForType(move->kind);
321 asm_->Spill(last_spill_offset, spill_reg, move->kind);
323 LoadStackSlot(dst, last_spill_offset, move->kind);
335 asm_->LoadConstant(dst, load->kind == kI64
340 if (kNeedS128RegPair && load->kind == kS128) {
342 load->kind);
344 asm_->Fill(dst, load->value, load->kind);
428 RegClass rc = reg_class_for(source->kind());
435 *target = VarState(source->kind(), source->offset());
440 *target = VarState(source->kind(), *reg, source->offset());
506 offset = LiftoffAssembler::NextSpillOffset(var.kind(), offset);
555 if (!is_reference(slot.kind())) continue;
573 if (is_reference(slot.kind())) {
583 if (!is_reference(slot.kind())) continue;
628 LiftoffRegister reg = GetUnusedRegister(reg_class_for(slot.kind()), pinned);
633 Fill(reg, slot.offset(), slot.kind());
693 RegClass rc = reg_class_for(slot.kind());
701 Move(dst_reg, slot.reg(), slot.kind());
724 RegClass rc = reg_class_for(slot.kind());
742 b.offset() > a.offset() - value_kind_size(a.kind()) &&
743 b.offset() - value_kind_size(b.kind()) < a.offset();
873 Spill(slot->offset(), slot->reg(), slot->kind());
893 Spill(slot.offset(), slot.reg(), slot.kind());
949 ValueKind kind = sig->GetParam(param);
950 const bool is_gp_pair = kNeedI64RegPair && kind == kI64;
964 RegClass rc = is_gp_pair ? kGpReg : reg_class_for(kind);
967 LiftoffRegister::from_external_code(rc, kind, reg_code);
1021 Spill(it->offset(), it->reg(), it->kind());
1130 ValueKind kind) {
1136 StackTransferRecipe(this).MoveRegister(dst, src, kind);
1138 // Calling low_fp is fine, Move will automatically check the kind and
1140 Move(dst.low_fp(), src.low_fp(), kind);
1142 Move(dst.gp(), src.gp(), kind);
1144 Move(dst.fp(), src.fp(), kind);
1153 stack_transfers.MoveRegister(tuple.dst, tuple.src, tuple.kind);
1161 ValueKind return_kind = sig->GetReturn(0).kind();
1162 // Defaults to a gp reg, will be set below if return kind is not gp.
1194 ValueKind return_kind = sig->GetReturn(i).kind();
1214 ValueKind return_kind = sig->GetReturn(i).kind();
1349 Spill(slot->offset(), slot->reg(), slot->kind());
1368 os << name(slot.kind()) << ":";