Vreg Vunit::makeConst(Vconst vconst) { auto it = constToReg.find(vconst); if (it != constToReg.end()) return it->second; auto const reg = makeReg(); constToReg.emplace(vconst, reg); regToConst.emplace(reg, vconst); return reg; }
Vreg Vunit::makeConst(uint64_t v) { auto it = constants.find(v); if (it != constants.end()) return it->second; return constants[v] = makeReg(); }
Vreg Vunit::makeConst(Vptr p) { auto it = constants.find(p); if (it != constants.end()) return it->second; return constants[p] = makeReg(); }
Vreg Vunit::makeConst(bool b) { auto it = constants.find(b); if (it != constants.end()) return it->second; return constants[b] = makeReg(); }