Lines Matching defs:reg
153 Register gp_reg() const { return reg().gp(); }
154 DoubleRegister fp_reg() const { return reg().fp(); }
155 LiftoffRegister reg() const {
159 RegClass reg_class() const { return reg().reg_class(); }
180 reg_ = src.reg();
290 Register reg = no_reg;
292 reg = cached_instance;
296 reg = cached_mem_start;
300 LiftoffRegister ret{reg};
307 void SetCacheRegister(Register* cache, Register reg) {
309 *cache = reg;
310 int liftoff_code = LiftoffRegister{reg}.liftoff_code();
313 used_registers.set(reg);
316 void SetInstanceCacheRegister(Register reg) {
317 SetCacheRegister(&cached_instance, reg);
320 void SetMemStartCacheRegister(Register reg) {
321 SetCacheRegister(&cached_mem_start, reg);
360 void inc_used(LiftoffRegister reg) {
361 if (reg.is_pair()) {
362 inc_used(reg.low());
363 inc_used(reg.high());
366 used_registers.set(reg);
367 DCHECK_GT(kMaxInt, register_use_count[reg.liftoff_code()]);
368 ++register_use_count[reg.liftoff_code()];
372 void dec_used(LiftoffRegister reg) {
373 DCHECK(is_used(reg));
374 if (reg.is_pair()) {
375 dec_used(reg.low());
376 dec_used(reg.high());
379 int code = reg.liftoff_code();
381 if (--register_use_count[code] == 0) used_registers.clear(reg);
384 bool is_used(LiftoffRegister reg) const {
385 if (reg.is_pair()) return is_used(reg.low()) || is_used(reg.high());
386 bool used = used_registers.has(reg);
387 DCHECK_EQ(used, register_use_count[reg.liftoff_code()] != 0);
391 uint32_t get_use_count(LiftoffRegister reg) const {
392 if (reg.is_pair()) {
393 DCHECK_EQ(register_use_count[reg.low().liftoff_code()],
394 register_use_count[reg.high().liftoff_code()]);
395 reg = reg.low();
397 DCHECK_GT(arraysize(register_use_count), reg.liftoff_code());
398 return register_use_count[reg.liftoff_code()];
401 void clear_used(LiftoffRegister reg) {
402 if (reg.is_pair()) {
403 clear_used(reg.low());
404 clear_used(reg.high());
407 register_use_count[reg.liftoff_code()] = 0;
408 used_registers.clear(reg);
411 bool is_free(LiftoffRegister reg) const { return !is_used(reg); }
427 LiftoffRegister reg = unspilled.GetFirstRegSet();
428 return reg;
458 cache_state_.dec_used(slot.reg());
459 return slot.reg();
468 LiftoffRegister reg = PopToRegister(pinned);
469 if (cache_state()->is_free(reg)) return reg;
471 pinned.set(reg);
472 LiftoffRegister new_reg = GetUnusedRegister(reg.reg_class(), pinned);
473 Move(new_reg, reg, kind);
514 void PushRegister(ValueKind kind, LiftoffRegister reg) {
515 DCHECK_EQ(reg_class_for(kind), reg.reg_class());
516 cache_state_.inc_used(reg);
517 cache_state_.stack_state.emplace_back(kind, reg, NextSpillOffset(kind));
523 LiftoffRegister reg{kReturnRegister0};
525 DCHECK(cache_state_.is_free(reg));
526 cache_state_.inc_used(reg);
527 cache_state_.stack_state.emplace_back(kRef, reg, NextSpillOffset(kRef));
542 uint32_t GetNumUses(LiftoffRegister reg) const {
543 return cache_state_.get_use_count(reg);
551 for (LiftoffRegister reg : try_first) {
552 DCHECK_EQ(reg.reg_class(), rc);
553 if (cache_state_.is_free(reg)) return reg;
601 // Clear any uses of {reg} in both the cache and in {possible_uses}.
603 // {reg}, then the content of {reg} is moved to a new temporary register, and
605 void ClearRegister(Register reg,