Lines Matching refs:imm
109 wait_imm imm; member
118 : imm(imm_), events(event_), counters(get_counters_for_event(event_)), in wait_entry()
131 changed |= imm.combine(other.imm); in join()
144 imm.lgkm = wait_imm::unset_counter; in remove_counter()
149 imm.vm = wait_imm::unset_counter; in remove_counter()
156 imm.exp = wait_imm::unset_counter; in remove_counter()
162 imm.vs = wait_imm::unset_counter; in remove_counter()
259 wait.combine(it->second.imm); in check_instr()
285 wait.combine(it->second.imm); in check_instr()
291 parse_wait_instr(wait_ctx& ctx, wait_imm& imm, Instruction* instr) in parse_wait_instr() argument
295 imm.vs = std::min<uint8_t>(imm.vs, instr->sopk().imm); in parse_wait_instr()
298 imm.combine(wait_imm(ctx.chip_class, instr->sopp().imm)); in parse_wait_instr()
305 perform_barrier(wait_ctx& ctx, wait_imm& imm, memory_sync_info sync, unsigned semantics) in perform_barrier() argument
327 imm.combine(ctx.barrier_imm[idx]); in perform_barrier()
333 force_waitcnt(wait_ctx& ctx, wait_imm& imm) in force_waitcnt() argument
336 imm.vm = 0; in force_waitcnt()
338 imm.exp = 0; in force_waitcnt()
340 imm.lgkm = 0; in force_waitcnt()
344 imm.vs = 0; in force_waitcnt()
349 kill(wait_imm& imm, Instruction* instr, wait_ctx& ctx, memory_sync_info sync_info) in kill() argument
355 return force_waitcnt(ctx, imm); in kill()
359 check_instr(ctx, imm, instr); in kill()
366 imm.lgkm = 0; in kill()
378 imm.lgkm = 0; in kill()
391 imm.vs = 0; in kill()
393 imm.vm = 0; in kill()
398 perform_barrier(ctx, imm, instr->barrier().sync, semantic_acqrel); in kill()
400 perform_barrier(ctx, imm, sync_info, semantic_release); in kill()
402 if (!imm.empty()) { in kill()
403 if (ctx.pending_flat_vm && imm.vm != wait_imm::unset_counter) in kill()
404 imm.vm = 0; in kill()
405 if (ctx.pending_flat_lgkm && imm.lgkm != wait_imm::unset_counter) in kill()
406 imm.lgkm = 0; in kill()
409 ctx.exp_cnt = std::min(ctx.exp_cnt, imm.exp); in kill()
410 ctx.vm_cnt = std::min(ctx.vm_cnt, imm.vm); in kill()
411 ctx.lgkm_cnt = std::min(ctx.lgkm_cnt, imm.lgkm); in kill()
412 ctx.vs_cnt = std::min(ctx.vs_cnt, imm.vs); in kill()
418 if (bar.exp != wait_imm::unset_counter && imm.exp <= bar.exp) { in kill()
422 if (bar.vm != wait_imm::unset_counter && imm.vm <= bar.vm) { in kill()
426 if (bar.lgkm != wait_imm::unset_counter && imm.lgkm <= bar.lgkm) { in kill()
430 if (bar.vs != wait_imm::unset_counter && imm.vs <= bar.vs) { in kill()
441 if (imm.exp != wait_imm::unset_counter && imm.exp <= it->second.imm.exp) in kill()
443 if (imm.vm != wait_imm::unset_counter && imm.vm <= it->second.imm.vm) in kill()
445 if (imm.lgkm != wait_imm::unset_counter && imm.lgkm <= it->second.imm.lgkm) in kill()
447 if (imm.vs != wait_imm::unset_counter && imm.vs <= it->second.imm.vs) in kill()
456 if (imm.vm == 0) in kill()
458 if (imm.lgkm == 0) { in kill()
533 entry.imm.exp < ctx.max_exp_cnt) in update_counters()
534 entry.imm.exp++; in update_counters()
536 entry.imm.lgkm < ctx.max_lgkm_cnt) in update_counters()
537 entry.imm.lgkm++; in update_counters()
539 entry.imm.vm < ctx.max_vm_cnt) in update_counters()
540 entry.imm.vm++; in update_counters()
542 entry.imm.vs < ctx.max_vs_cnt) in update_counters()
543 entry.imm.vs++; in update_counters()
561 e.second.imm.vm = 0; in update_counters_for_flat_load()
563 e.second.imm.lgkm = 0; in update_counters_for_flat_load()
574 wait_imm imm; in insert_wait_entry() local
576 imm.lgkm = 0; in insert_wait_entry()
578 imm.vm = 0; in insert_wait_entry()
580 imm.exp = 0; in insert_wait_entry()
582 imm.vs = 0; in insert_wait_entry()
584 wait_entry new_entry(event, imm, !rc.is_linear(), wait_on_read); in insert_wait_entry()
709 emit_waitcnt(wait_ctx& ctx, std::vector<aco_ptr<Instruction>>& instructions, wait_imm& imm) in emit_waitcnt() argument
711 if (imm.vs != wait_imm::unset_counter) { in emit_waitcnt()
716 waitcnt_vs->imm = imm.vs; in emit_waitcnt()
718 imm.vs = wait_imm::unset_counter; in emit_waitcnt()
720 if (!imm.empty()) { in emit_waitcnt()
723 waitcnt->imm = imm.pack(ctx.chip_class); in emit_waitcnt()
727 imm = wait_imm(); in emit_waitcnt()