Lines Matching refs:Temp
41 template <> struct hash<aco::Temp> {
42 size_t operator()(aco::Temp temp) const noexcept
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;
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 */
81 std::unordered_map<Temp, remat_info> remat;
87 Temp scratch_rsrc;
184 for (std::unordered_map<Temp, std::pair<uint32_t, uint32_t>>::iterator it =
214 std::unordered_set<Temp> phi_defs;
245 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair : next_use_distances_start) {
246 Temp temp = pair.first;
315 do_reload(spill_ctx& ctx, Temp tmp, Temp new_name, uint32_t spill_id)
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>(
398 (Temp)pair.first, pair.second.second + block->instructions.size()));
421 local_next_uses[idx].push_back(std::make_pair<Temp, uint32_t>(op.getTemp(), idx));
539 Temp to_spill;
540 for (const std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair :
580 Temp to_spill;
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) {
730 std::set<Temp>::iterator it = partial_spills.begin();
731 Temp to_spill = Temp();
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);
792 Temp new_name = ctx.program->allocateTmp(live.first.regClass());
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);
827 Temp new_name = ctx.program->allocateTmp(live.first.regClass());
881 Temp var = phi->operands[i].getTemp();
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])
935 for (std::pair<Temp, uint32_t> pair : ctx.spills_entry[block_idx]) {
953 for (std::pair<Temp, uint32_t> exit_spill : ctx.spills_exit[pred_idx]) {
961 Temp var = pair.first;
962 std::map<Temp, Temp>::iterator rename_it = ctx.renames[pred_idx].find(var);
1000 std::map<Temp, Temp>::iterator it =
1014 Temp tmp = phi->operands[i].getTemp();
1017 Temp new_name = ctx.program->allocateTmp(tmp.regClass());
1046 for (std::pair<const Temp, std::pair<uint32_t, uint32_t>>& pair :
1068 Temp new_name = ctx.program->allocateTmp(pair.first.regClass());
1087 Temp rename = Temp();
1091 if (rename == Temp())
1096 if (rename == Temp())
1113 Temp tmp;
1131 if (!(rename == Temp() || rename == pair.first))
1182 std::map<Temp, std::pair<Temp, uint32_t>> reloads;
1203 Temp new_tmp = ctx.program->allocateTmp(op.regClass());
1222 Temp to_spill;
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)
1268 for (std::pair<const Temp, std::pair<Temp, uint32_t>>& pair : reloads) {
1328 std::map<Temp, Temp> renames = std::move(ctx.renames[loop_header->index]);
1335 for (std::pair<Temp, Temp> rename : renames) {
1392 Temp
1393 load_scratch_resource(spill_ctx& ctx, Temp& scratch_offset, Block& block,
1418 Temp private_segment_buffer = ctx.program->private_segment_buffer;
1452 Temp scratch_offset = ctx.program->scratch_offset;
1458 if (ctx.scratch_rsrc == Temp()) {
1472 if (ctx.scratch_rsrc == Temp()) {
1494 Temp temp = spill->operands[0].getTemp();
1506 Temp elem = split->definitions[i].getTemp();
1545 Temp tmp = bld.tmp(v1);
1707 std::vector<Temp> vgpr_spill_temps((ctx.sgpr_spill_slots + ctx.wave_size - 1) / ctx.wave_size);
1745 if (vgpr_spill_temps[i] == Temp())
1749 for (std::pair<Temp, uint32_t> pair : ctx.spills_entry[block.index]) {
1758 vgpr_spill_temps[i] = Temp();
1783 if (vgpr_spill_temps[spill_slot / ctx.wave_size] == Temp()) {
1784 Temp linear_vgpr = ctx.program->allocateTmp(v1.as_linear());
1824 if (vgpr_spill_temps[spill_slot / ctx.wave_size] == Temp()) {
1825 Temp linear_vgpr = ctx.program->allocateTmp(v1.as_linear());
1885 std::set<Temp> vgprs;
1904 for (Temp tmp : vgprs) {