UUID refactoring

This commit is contained in:
Blaise Tine 2024-04-14 22:01:03 -07:00
parent 8a933520f0
commit ac669a30ca
3 changed files with 12 additions and 16 deletions

View file

@ -225,8 +225,6 @@ uint64_t dpi_uuid_gen(bool reset, int wid, uint64_t PC) {
uuid_gen = it->second;
}
uint32_t instr_uuid = uuid_gen->get_uuid(PC);
uint32_t instr_id = instr_uuid & 0xffff;
uint32_t instr_ref = instr_uuid >> 16;
uint64_t uuid = (uint64_t(instr_ref) << 32) | (wid << 16) | instr_id;
uint64_t uuid = (uint64_t(instr_uuid) << 12) | wid;
return uuid;
}

View file

@ -24,19 +24,19 @@ public:
virtual ~UUIDGenerator() {}
uint32_t get_uuid(uint64_t PC) {
uint32_t id;
uint32_t ref;
uint16_t id;
uint16_t ref;
auto it = uuid_map_.find(PC);
if (it != uuid_map_.end()) {
uint64_t value = it->second;
id = value & 0xffff;
ref = value >> 16;
uint32_t value = it->second;
ref = value & 0xffff;
id = value >> 16;
++ref;
} else {
ref = 0;
id = ids_++;
ref = -1;
}
++ref;
uint64_t ret = (uint64_t(ref) << 16) | id;
}
uint32_t ret = (uint32_t(id) << 16) | ref;
uuid_map_[PC] = ret;
return ret;
}
@ -49,7 +49,7 @@ public:
private:
std::unordered_map<uint64_t, uint32_t> uuid_map_;
uint32_t ids_;
uint16_t ids_;
};
}

View file

@ -141,9 +141,7 @@ instr_trace_t* Emulator::step() {
#ifndef NDEBUG
uint32_t instr_uuid = warp.uui_gen.get_uuid(warp.PC);
uint32_t g_wid = core_->id() * arch_.num_warps() + scheduled_warp;
uint32_t instr_id = instr_uuid & 0xffff;
uint32_t instr_ref = instr_uuid >> 16;
uint64_t uuid = (uint64_t(instr_ref) << 32) | (g_wid << 16) | instr_id;
uint64_t uuid = (uint64_t(instr_uuid) << 12) | g_wid;
#else
uint64_t uuid = 0;
#endif