Lines Matching refs:instructions
187 it->second.second = it->second.second + block->instructions.size();
189 int idx = block->instructions.size() - 1;
191 aco_ptr<Instruction>& instr = block->instructions[idx];
216 aco_ptr<Instruction>& instr = block->instructions[idx];
367 for (aco_ptr<Instruction>& instr : block.instructions) {
388 if (local_next_uses.size() < block->instructions.size()) {
391 local_next_uses.resize(block->instructions.size());
394 local_next_uses[block->instructions.size() - 1].clear();
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()));
401 for (int idx = block->instructions.size() - 1; idx >= 0; idx--) {
402 aco_ptr<Instruction>& instr = block->instructions[idx];
408 if (idx != (int)block->instructions.size() - 1) {
444 aco_ptr<Instruction>& instr = ctx.program->blocks[block_idx].instructions[idx];
458 for (aco_ptr<Instruction>& phi : block.instructions) {
475 * reg_pressure if the branch instructions define sgprs. */
697 for (aco_ptr<Instruction>& phi : block->instructions) {
762 std::vector<aco_ptr<Instruction>> instructions;
767 assert(ctx.register_demand[block_idx].size() == block->instructions.size());
794 instructions.emplace_back(std::move(reload));
801 assert(insert_idx < block->instructions.size());
802 instructions.emplace_back(std::move(block->instructions[insert_idx]));
805 } while (instructions.back()->opcode != aco_opcode::p_logical_start);
830 instructions.emplace_back(std::move(reload));
836 /* combine new reload instructions with original block */
837 if (!instructions.empty()) {
842 instructions.insert(instructions.end(),
844 std::next(block->instructions.begin(), insert_idx)),
846 block->instructions.end()));
847 block->instructions = std::move(instructions);
857 for (aco_ptr<Instruction>& phi : block->instructions) {
861 /* if the phi is not spilled, add to instructions */
864 instructions.emplace_back(std::move(phi));
915 unsigned idx = pred.instructions.size();
920 pred.instructions[idx]->opcode != aco_opcode::p_logical_end);
921 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
922 pred.instructions.insert(it, std::move(spill));
929 /* remove phi from instructions */
973 unsigned idx = pred.instructions.size();
978 pred.instructions[idx]->opcode != aco_opcode::p_logical_end);
979 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
980 pred.instructions.insert(it, std::move(spill));
986 for (aco_ptr<Instruction>& phi : instructions) {
1019 unsigned idx = pred.instructions.size();
1024 pred.instructions[idx]->opcode != aco_opcode::p_logical_end);
1025 std::vector<aco_ptr<Instruction>>::iterator it = std::next(pred.instructions.begin(), idx);
1040 pred.instructions.insert(it, std::move(reload));
1070 unsigned idx = pred.instructions.size();
1075 pred.instructions[idx]->opcode != aco_opcode::p_logical_end);
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));
1135 /* combine phis with instructions */
1137 while (!block->instructions[idx]) {
1147 instructions.size(), demand_before);
1150 std::vector<aco_ptr<Instruction>>::iterator start = std::next(block->instructions.begin(), idx);
1151 instructions.insert(
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;
1166 while (block->instructions[idx]->opcode == aco_opcode::p_phi ||
1167 block->instructions[idx]->opcode == aco_opcode::p_linear_phi) {
1168 instructions.emplace_back(std::move(block->instructions[idx++]));
1179 while (idx < block->instructions.size()) {
1180 aco_ptr<Instruction>& instr = block->instructions[idx];
1258 /* add spill to new instructions */
1263 instructions.emplace_back(std::move(spill));
1267 /* add reloads and instruction to new instructions */
1271 instructions.emplace_back(std::move(reload));
1273 instructions.emplace_back(std::move(instr));
1277 block->instructions = std::move(instructions);
1338 std::vector<aco_ptr<Instruction>>::iterator instr_it = current.instructions.begin();
1341 while (instr_it != current.instructions.end()) {
1371 while (!renamed && instr_it != current.instructions.end()) {
1394 std::vector<aco_ptr<Instruction>>& instructions, unsigned offset)
1398 bld.reset(&instructions);
1405 std::vector<aco_ptr<Instruction>>& prev_instructions = ctx.program->blocks[block_idx].instructions;
1414 /* GFX9+ uses scratch_* instructions, which don't use a resource. Return a SADDR instead. */
1449 std::vector<aco_ptr<Instruction>>& instructions, uint32_t spill_slot,
1462 load_scratch_resource(ctx, scratch_offset, block, instructions, saddr);
1476 load_scratch_resource(ctx, scratch_offset, block, instructions, rsrc_offset);
1482 spill_vgpr(spill_ctx& ctx, Block& block, std::vector<aco_ptr<Instruction>>& instructions,
1491 setup_vgpr_spill_reload(ctx, block, instructions, spill_slot, &offset);
1497 Builder bld(ctx.program, &instructions);
1528 reload_vgpr(spill_ctx& ctx, Block& block, std::vector<aco_ptr<Instruction>>& instructions,
1535 setup_vgpr_spill_reload(ctx, block, instructions, spill_slot, &offset);
1539 Builder bld(ctx.program, &instructions);
1710 /* replace pseudo instructions with actual hardware instructions */
1733 std::vector<aco_ptr<Instruction>>::iterator it = block.instructions.begin();
1736 block.instructions.insert(it, std::move(destr));
1763 std::vector<aco_ptr<Instruction>> instructions;
1764 instructions.reserve(block.instructions.size());
1765 Builder bld(ctx.program, &instructions);
1766 for (it = block.instructions.begin(); it != block.instructions.end(); ++it) {
1776 spill_vgpr(ctx, block, instructions, *it, slots);
1792 instructions.emplace_back(std::move(create));
1797 ctx.program->blocks[last_top_level_block_idx].instructions;
1808 instructions.emplace_back(aco_ptr<Instruction>(spill));
1818 reload_vgpr(ctx, block, instructions, *it, slots);
1833 instructions.emplace_back(std::move(create));
1838 ctx.program->blocks[last_top_level_block_idx].instructions;
1849 instructions.emplace_back(aco_ptr<Instruction>(reload));
1852 instructions.emplace_back(std::move(*it));
1855 block.instructions = std::move(instructions);
1874 for (aco_ptr<Instruction>& instr : block.instructions) {
1888 for (int i = pred.instructions.size() - 1; i >= 0; i--) {
1889 aco_ptr<Instruction>& pred_instr = pred.instructions[i];
1908 std::vector<aco_ptr<Instruction>>::iterator it = block.instructions.begin();
1911 block.instructions.insert(it, std::move(destr));