bool TlppVerify::InsnDependencyCheck()

in src/sim/sim_tlpp.cc [99:130]


bool TlppVerify::InsnDependencyCheck(const VTAGenericInsn *insn,
                                     bool before_run) {
  const VTAMemInsn* mem = reinterpret_cast<const VTAMemInsn*>(insn);
  bool pop_prev = mem->pop_prev_dep;
  bool pop_next = mem->pop_next_dep;
  bool push_prev = mem->push_prev_dep;
  bool push_next = mem->push_next_dep;
  CORE_TYPE core_type = GetCoreType(GetOperationCode(insn), insn);
  bool bcheck = false;
  switch (core_type) {
    case COREGEMM:
      bcheck = DependencyProcess(before_run, pop_prev,
          pop_next, push_prev, push_next,
          &l2g_q_, &s2g_q_, &g2l_q_, &g2s_q_, CORELOAD, CORESTORE);
      break;
    case CORELOAD:
      bcheck = DependencyProcess(before_run, pop_prev,
          pop_next, push_prev, push_next,
          nullptr, &g2l_q_, nullptr, &l2g_q_, COREMAX, COREGEMM);
      break;
    case CORESTORE:
      bcheck = DependencyProcess(before_run, pop_prev,
          pop_next, push_prev, push_next,
          &g2s_q_, nullptr, &s2g_q_, nullptr, COREGEMM, COREMAX);
      break;
    case COREMAX:
      assert(0);
      break;
  }

  return bcheck;
}