Lines Matching defs:std
40 namespace std {
45 std::memcpy(&v, &temp, sizeof(temp));
46 return std::hash<uint32_t>{}(v);
49 } // namespace std
68 std::vector<std::vector<RegisterDemand>> register_demand;
69 std::vector<std::map<Temp, Temp>> renames;
70 std::vector<std::unordered_map<Temp, uint32_t>> spills_entry;
71 std::vector<std::unordered_map<Temp, uint32_t>> spills_exit;
73 std::vector<bool> processed;
74 std::stack<Block*, std::vector<Block*>> loop_header;
75 std::vector<std::unordered_map<Temp, std::pair<uint32_t, uint32_t>>> next_use_distances_start;
76 std::vector<std::unordered_map<Temp, std::pair<uint32_t, uint32_t>>> next_use_distances_end;
77 std::vector<std::vector<std::pair<Temp, uint32_t>>> local_next_use_distance; /* Working buffer */
78 std::vector<std::pair<RegClass, std::unordered_set<uint32_t>>> interferences;
79 std::vector<std::vector<uint32_t>> affinities;
80 std::vector<bool> is_reloaded;
81 std::unordered_map<Temp, remat_info> remat;
82 std::set<Instruction*> unused_remats;
90 std::vector<std::vector<RegisterDemand>> register_demand_)
92 register_demand(std::move(register_demand_)), renames(program->blocks.size()),
103 std::vector<uint32_t>& vec = affinities[i];
112 affinities.emplace_back(std::vector<uint32_t>({first, second}));
122 affinities.erase(std::next(affinities.begin(), found_second));
140 interferences.emplace_back(rc, std::unordered_set<uint32_t>());
184 for (std::unordered_map<Temp, std::pair<uint32_t, uint32_t>>::iterator it =
214 std::unordered_set<Temp> phi_defs;
219 std::pair<uint32_t, uint32_t> distance{block_idx, 0};
233 std::make_pair(instr->operands[i].getTemp(), distance));
235 std::pair<uint32_t, uint32_t>& entry_distance = insert_result.first->second;
237 worklist = std::max(worklist, pred_idx + 1);
245 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair : next_use_distances_start) {
252 std::vector<unsigned>& preds = temp.is_linear() ? block->linear_preds : block->logical_preds;
257 std::make_pair(temp, std::pair<uint32_t, uint32_t>{}));
259 std::pair<uint32_t, uint32_t>& entry_distance = insert_result.first->second;
263 distance = std::min(entry_distance.second, distance);
265 if (entry_distance != std::pair<uint32_t, uint32_t>{dom, distance}) {
266 worklist = std::max(worklist, pred_idx + 1);
317 std::unordered_map<Temp, remat_info>::iterator remat = ctx.remat.find(tmp);
386 std::vector<std::vector<std::pair<Temp, uint32_t>>>& local_next_uses)
395 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair :
397 local_next_uses[block->instructions.size() - 1].push_back(std::make_pair<Temp, uint32_t>(
418 auto it = std::find_if(local_next_uses[idx].begin(), local_next_uses[idx].end(),
421 local_next_uses[idx].push_back(std::make_pair<Temp, uint32_t>(op.getTemp(), idx));
429 auto it = std::find_if(local_next_uses[idx].begin(), local_next_uses[idx].end(),
478 std::max<int16_t>(reg_pressure.sgpr, ctx.register_demand[pred].back().sgpr);
540 for (const std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair :
583 for (const std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair :
604 for (std::pair<Temp, uint32_t> pair : ctx.spills_exit[pred_idx]) {
617 for (std::pair<Temp, uint32_t> pair : ctx.spills_exit[pred_idx]) {
634 for (std::pair<Temp, uint32_t> pair : ctx.spills_exit[pred_idx]) {
644 for (std::pair<Temp, uint32_t> pair : ctx.spills_exit[pred_idx]) {
656 std::set<Temp> partial_spills;
659 for (const std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair : next_use_distances) {
660 std::vector<unsigned>& preds =
703 std::vector<unsigned>& preds =
730 std::set<Temp>::iterator it = partial_spills.begin();
762 std::vector<aco_ptr<Instruction>> instructions;
768 std::vector<RegisterDemand> reg_demand;
772 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& live :
785 std::map<Temp, Temp>::iterator it = ctx.renames[pred_idx].find(live.first);
794 instructions.emplace_back(std::move(reload));
802 instructions.emplace_back(std::move(block->instructions[insert_idx]));
808 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& live :
819 std::map<Temp, Temp>::iterator it = ctx.renames[pred_idx].find(live.first);
830 instructions.emplace_back(std::move(reload));
839 std::next(ctx.register_demand[block->index].begin(), insert_idx),
841 ctx.register_demand[block_idx] = std::move(reg_demand);
843 std::move_iterator<std::vector<aco_ptr<Instruction>>::iterator>(
844 std::next(block->instructions.begin(), insert_idx)),
845 std::move_iterator<std::vector<aco_ptr<Instruction>>::iterator>(
847 block->instructions = std::move(instructions);
864 instructions.emplace_back(std::move(phi));
868 std::vector<unsigned>& preds =
883 std::map<Temp, Temp>::iterator rename_it = ctx.renames[pred_idx].find(var);
906 for (std::pair<Temp, uint32_t> pair : ctx.spills_exit[pred_idx])
921 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
922 pred.instructions.insert(it, std::move(spill));
935 for (std::pair<Temp, uint32_t> pair : ctx.spills_entry[block_idx]) {
936 std::vector<unsigned> preds =
953 for (std::pair<Temp, uint32_t> exit_spill : ctx.spills_exit[pred_idx]) {
962 std::map<Temp, Temp>::iterator rename_it = ctx.renames[pred_idx].find(var);
979 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
980 pred.instructions.insert(it, std::move(spill));
991 std::vector<unsigned>& preds =
1000 std::map<Temp, Temp>::iterator it =
1025 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
1040 pred.instructions.insert(it, std::move(reload));
1046 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair :
1051 std::vector<unsigned> preds =
1076 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
1080 pred.instructions.insert(it, std::move(reload));
1127 instructions.emplace_back(std::move(phi));
1150 std::vector<aco_ptr<Instruction>>::iterator start = std::next(block->instructions.begin(), idx);
1152 instructions.end(), std::move_iterator<std::vector<aco_ptr<Instruction>>::iterator>(start),
1153 std::move_iterator<std::vector<aco_ptr<Instruction>>::iterator>(block->instructions.end()));
1154 block->instructions = std::move(instructions);
1162 std::vector<aco_ptr<Instruction>> instructions;
1168 instructions.emplace_back(std::move(block->instructions[idx++]));
1182 std::map<Temp, std::pair<Temp, uint32_t>> reloads;
1205 reloads[new_tmp] = std::make_pair(op.getTemp(), current_spills[op.getTemp()]);
1228 for (std::pair<Temp, uint32_t> pair : ctx.local_next_use_distance[idx]) {
1245 for (std::pair<Temp, uint32_t> pair : current_spills)
1247 for (std::pair<const Temp, std::pair<Temp, uint32_t>>& pair : reloads)
1263 instructions.emplace_back(std::move(spill));
1268 for (std::pair<const Temp, std::pair<Temp, uint32_t>>& pair : reloads) {
1271 instructions.emplace_back(std::move(reload));
1273 instructions.emplace_back(std::move(instr));
1277 block->instructions = std::move(instructions);
1291 for (auto it2 = std::next(it); it2 != ctx.spills_entry[block_idx].end(); ++it2)
1328 std::map<Temp, Temp> renames = std::move(ctx.renames[loop_header->index]);
1335 for (std::pair<Temp, Temp> rename : renames) {
1338 std::vector<aco_ptr<Instruction>>::iterator instr_it = current.instructions.begin();
1394 std::vector<aco_ptr<Instruction>>& instructions, unsigned offset)
1405 std::vector<aco_ptr<Instruction>>& prev_instructions = ctx.program->blocks[block_idx].instructions;
1409 bld.reset(&prev_instructions, std::next(prev_instructions.begin(), idx));
1449 std::vector<aco_ptr<Instruction>>& instructions, uint32_t spill_slot,
1482 spill_vgpr(spill_ctx& ctx, Block& block, std::vector<aco_ptr<Instruction>>& instructions,
1483 aco_ptr<Instruction>& spill, std::vector<uint32_t>& slots)
1528 reload_vgpr(spill_ctx& ctx, Block& block, std::vector<aco_ptr<Instruction>>& instructions,
1529 aco_ptr<Instruction>& reload, std::vector<uint32_t>& slots)
1570 add_interferences(spill_ctx& ctx, std::vector<bool>& is_assigned, std::vector<uint32_t>& slots,
1571 std::vector<bool>& slots_used, unsigned id)
1579 std::fill(slots_used.begin() + slot, slots_used.begin() + slot + other_rc.size(), true);
1584 find_available_slot(std::vector<bool>& used, unsigned wave_size, unsigned size, bool is_sgpr)
1607 std::fill(used.begin(), used.end(), false);
1617 assign_spill_slots_helper(spill_ctx& ctx, RegType type, std::vector<bool>& is_assigned,
1618 std::vector<uint32_t>& slots, unsigned* num_slots)
1620 std::vector<bool> slots_used;
1623 for (std::vector<uint32_t>& vec : ctx.affinities) {
1667 std::vector<uint32_t> slots(ctx.interferences.size());
1668 std::vector<bool> is_assigned(ctx.interferences.size());
1671 for (std::vector<uint32_t>& vec : ctx.affinities) {
1692 for (std::vector<uint32_t>& vec : ctx.affinities) {
1707 std::vector<Temp> vgpr_spill_temps((ctx.sgpr_spill_slots + ctx.wave_size - 1) / ctx.wave_size);
1712 std::vector<bool> reload_in_loop(vgpr_spill_temps.size());
1733 std::vector<aco_ptr<Instruction>>::iterator it = block.instructions.begin();
1736 block.instructions.insert(it, std::move(destr));
1749 for (std::pair<Temp, uint32_t> pair : ctx.spills_entry[block.index]) {
1762 std::vector<aco_ptr<Instruction>>::iterator it;
1763 std::vector<aco_ptr<Instruction>> instructions;
1792 instructions.emplace_back(std::move(create));
1796 std::vector<aco_ptr<Instruction>>& block_instrs =
1798 block_instrs.insert(std::prev(block_instrs.end()), std::move(create));
1833 instructions.emplace_back(std::move(create));
1837 std::vector<aco_ptr<Instruction>>& block_instrs =
1839 block_instrs.insert(std::prev(block_instrs.end()), std::move(create));
1852 instructions.emplace_back(std::move(*it));
1855 block.instructions = std::move(instructions);
1885 std::set<Temp> vgprs;
1908 std::vector<aco_ptr<Instruction>>::iterator it = block.instructions.begin();
1911 block.instructions.insert(it, std::move(destr));