/third_party/mesa3d/src/amd/compiler/ |
D | aco_live_var_analysis.cpp | 98 instr->operands[2].regClass().type() == RegType::sgpr) in instr_needs_vcc() 120 new_demand.sgpr -= phi_info[block->index].logical_phi_sgpr_ops; in process_live_temps_per_block() 130 register_demand[idx] = RegisterDemand(new_demand.vgpr, new_demand.sgpr); in process_live_temps_per_block() 154 new_demand.sgpr += phi_info[block->index].logical_phi_sgpr_ops; in process_live_temps_per_block() 219 assert(definition.getTemp().type() == RegType::sgpr); in process_live_temps_per_block() 265 if (insn->opcode == aco_opcode::p_phi && operand.getTemp().type() == RegType::sgpr) { in process_live_temps_per_block() 268 assert(operand.getTemp().type() == RegType::sgpr); in process_live_temps_per_block() 415 if (new_demand.vgpr > vgpr_limit || new_demand.sgpr > sgpr_limit) { in update_vgpr_sgpr_demand() 419 program->num_waves = program->dev.physical_sgprs / get_sgpr_alloc(program, new_demand.sgpr); in update_vgpr_sgpr_demand() 430 program->max_reg_demand.sgpr = get_addr_sgpr_from_waves(program, program->num_waves); in update_vgpr_sgpr_demand() [all …]
|
D | aco_validate.cpp | 323 check(instr->definitions[0].getTemp().type() == RegType::sgpr, in validate_ir() 331 unsigned sgpr[] = {0, 0}; in validate_ir() local 337 check(i != 1 || (op.isTemp() && op.regClass().type() == RegType::sgpr) || in validate_ir() 349 check(i == 0 || (op.isTemp() && op.regClass().type() == RegType::sgpr) || in validate_ir() 360 check(i == 2 || (op.isTemp() && op.regClass().type() == RegType::sgpr) || in validate_ir() 365 if (op.isTemp() && instr->operands[i].regClass().type() == RegType::sgpr) { in validate_ir() 369 if (op.tempId() != sgpr[0] && op.tempId() != sgpr[1]) { in validate_ir() 371 sgpr[num_sgprs++] = op.tempId(); in validate_ir() 385 check(instr->definitions[0].getTemp().type() == RegType::sgpr, in validate_ir() 388 check(op.isConstant() || op.regClass().type() <= RegType::sgpr, in validate_ir() [all …]
|
D | aco_ir.h | 303 sgpr, enumerator 347 constexpr RegType type() const { return rc <= RC::s16 ? RegType::sgpr : RegType::vgpr; } in type() 359 if (type == RegType::sgpr) { in get() 1845 constexpr RegisterDemand(const int16_t v, const int16_t s) noexcept : vgpr{v}, sgpr{s} {} in RegisterDemand() 1847 int16_t sgpr = 0; member 1851 return a.vgpr == b.vgpr && a.sgpr == b.sgpr; 1856 return vgpr > other.vgpr || sgpr > other.sgpr; in exceeds() 1861 if (t.type() == RegType::sgpr) 1862 return RegisterDemand(vgpr, sgpr + t.size()); 1864 return RegisterDemand(vgpr + t.size(), sgpr); [all …]
|
D | aco_spill.cpp | 477 reg_pressure.sgpr = in get_live_in_demand() 478 std::max<int16_t>(reg_pressure.sgpr, ctx.register_demand[pred].back().sgpr); in get_live_in_demand() 533 type = RegType::sgpr; in init_live_in_vars() 535 if (type == RegType::sgpr && loop_demand.sgpr <= ctx.target_pressure.sgpr) in init_live_in_vars() 544 (ctx.remat.count(pair.first) && type == RegType::sgpr)) && in init_live_in_vars() 553 if (type == RegType::sgpr) in init_live_in_vars() 555 type = RegType::sgpr; in init_live_in_vars() 581 type = reg_pressure.vgpr > ctx.target_pressure.vgpr ? RegType::vgpr : RegType::sgpr; in init_live_in_vars() 605 if (pair.first.type() != RegType::sgpr) { in init_live_in_vars() 612 spilled_registers.sgpr += pair.first.size(); in init_live_in_vars() [all …]
|
D | aco_instruction_selection_setup.cpp | 244 return RegClass(RegType::sgpr, ctx->program->lane_mask.size() * components); in get_reg_class() 480 nir_dest_is_divergent(alu_instr->dest.dest) ? RegType::vgpr : RegType::sgpr; in init_context() 593 RegClass rc = get_reg_class(ctx, RegType::sgpr, num_components, bit_size); in init_context() 601 RegType type = RegType::sgpr; in init_context() 623 case nir_intrinsic_load_smem_amd: type = RegType::sgpr; break; in init_context() 732 type = nir_dest_is_divergent(intrinsic->dest) ? RegType::vgpr : RegType::sgpr; in init_context() 735 type = ctx->stage == fragment_fs ? RegType::vgpr : RegType::sgpr; in init_context() 752 RegType type = nir_dest_is_divergent(tex->dest) ? RegType::vgpr : RegType::sgpr; in init_context() 772 RegClass rc = get_reg_class(ctx, RegType::sgpr, num_components, bit_size); in init_context() 778 RegType type = RegType::sgpr; in init_context()
|
D | aco_optimizer.cpp | 564 if (temp.type() == RegType::sgpr && !can_accept_sgpr) in pseudo_propagate_temp() 568 if (temp.type() == RegType::sgpr && !can_accept_sgpr) in pseudo_propagate_temp() 703 unsigned sgpr[] = {0, 0}; in check_vop3_operands() local 708 if (op.hasRegClass() && op.regClass().type() == RegType::sgpr) { in check_vop3_operands() 710 if (op.tempId() != sgpr[0] && op.tempId() != sgpr[1]) { in check_vop3_operands() 712 sgpr[num_sgprs++] = op.tempId(); in check_vop3_operands() 1170 op.getTemp().type() == RegType::sgpr)) { in check_sdwa_extract() 1327 if (info.is_temp() && info.temp.type() == RegType::sgpr && can_apply_sgprs(ctx, instr) && in label_instruction() 2150 if (op[1].type() == RegType::sgpr) in combine_ordering_test() 2152 unsigned num_sgprs = (op[0].type() == RegType::sgpr) + (op[1].type() == RegType::sgpr); in combine_ordering_test() [all …]
|
D | aco_register_allocation.cpp | 198 return {PhysReg{0}, (unsigned)program->max_reg_demand.sgpr}; in get_reg_bounds() 420 PhysRegInterval regs = get_reg_bounds(ctx.program, vgprs ? RegType::vgpr : RegType::sgpr); in print_regs() 1400 if (rc.type() == RegType::sgpr && reg % get_stride(rc) != 0) in get_reg_specified() 1407 bool is_vcc = rc.type() == RegType::sgpr && vcc_win.contains(reg_win) && ctx.program->needs_vcc; in get_reg_specified() 1431 ctx.program->max_reg_demand.sgpr)); in increase_register_file() 1432 } else if (type == RegType::sgpr && ctx.program->max_reg_demand.sgpr < ctx.sgpr_limit) { in increase_register_file() 1434 ctx.program->max_reg_demand.sgpr + 1)); in increase_register_file() 1900 for (; reg < ctx.program->max_reg_demand.sgpr && reg_file[PhysReg{(unsigned)reg}]; reg++) in handle_pseudo() 1902 if (reg == ctx.program->max_reg_demand.sgpr) { in handle_pseudo() 2400 instr->operands[2].regClass().type() == RegType::sgpr) in get_affinities() [all …]
|
D | aco_instruction_selection.cpp | 274 if (val.type() == RegType::sgpr) in as_vgpr() 363 assert(dst_rc.type() == RegType::vgpr && it->second[idx].type() == RegType::sgpr); in emit_extract_vector() 390 if (vec_src.type() == RegType::sgpr) { in emit_split_vector() 421 if (dst.type() == RegType::sgpr && num_components > dst.size()) { in expand_vector() 435 if (dst.type() == RegType::sgpr) in expand_vector() 459 if (dst.type() == RegType::sgpr) in expand_vector() 582 vec = bld.pseudo(aco_opcode::p_as_uniform, bld.def(RegClass(RegType::sgpr, vec.size())), vec); in byte_align_vector() 649 if (dst_bits % 32 == 0 || src.type() == RegType::sgpr) in convert_int() 655 assert(src.type() == RegType::sgpr || src_bits == src.bytes() * 8); in convert_int() 656 assert(dst.type() == RegType::sgpr || dst_bits == dst.bytes() * 8); in convert_int() [all …]
|
D | aco_insert_NOPs.cpp | 418 if (def.regClass().type() != RegType::sgpr) { in handle_instruction_gfx6() 449 if (!op.isConstant() && !op.isUndefined() && op.regClass().type() == RegType::sgpr) in handle_instruction_gfx6() 510 if (def.regClass().type() == RegType::sgpr) { in handle_instruction_gfx6() 628 { return def.getTemp().type() == RegType::sgpr; }); in instr_writes_sgpr()
|
D | aco_lower_to_cssa.cpp | 103 if (def.regClass().type() == RegType::sgpr && !op.isTemp()) { in collect_parallelcopies() 500 emit_copies_block(bld, ltg, RegType::sgpr); in emit_parallelcopies()
|
D | aco_print_ir.cpp | 94 } else if (rc.type() == RegType::sgpr) { in print_reg_class() 850 fprintf(output, "\tdemand: %u vgpr, %u sgpr\n", demand.vgpr, demand.sgpr); in aco_print_block() 858 fprintf(output, "(%3u vgpr, %3u sgpr) ", demand.vgpr, demand.sgpr); in aco_print_block()
|
D | aco_lower_to_hw_instr.cpp | 433 Operand src0(src0_reg, RegClass(src0_reg.reg() >= 256 ? RegType::vgpr : RegType::sgpr, size)); in emit_op() 828 if (dst.regClass().type() == RegType::sgpr) { in emit_reduction() 1628 it->second.op.regClass().type() == RegType::sgpr ? s2 : v2); in handle_operands() 1630 it->second.def.regClass().type() == RegType::sgpr ? s2 : v2); in handle_operands() 1866 if (preserve_scc && it->second.def.getTemp().type() == RegType::sgpr) in handle_operands() 2167 instr->operands[0].regClass().type() == RegType::sgpr) { in lower_to_hw_instr() 2174 assert(instr->definitions[0].regClass().type() == RegType::sgpr); in lower_to_hw_instr() 2422 if (def.regClass().type() == RegType::sgpr) in lower_to_hw_instr()
|
D | aco_ir.cpp | 302 if (instr->definitions[0].getTemp().type() == RegType::sgpr && gfx_level == GFX8) in convert_to_SDWA() 762 (instr->operands[0].isTemp() && instr->operands[0].getTemp().type() == RegType::sgpr)) in can_swap_operands()
|
D | aco_lower_phis.cpp | 325 assert(phi_src.regClass().type() == RegType::sgpr); in lower_subdword_phis()
|
D | aco_optimizer_postRA.cpp | 123 assert(def.regClass().type() != RegType::sgpr || def.physReg().reg() <= 255); in save_reg_writes()
|
D | aco_statistics.cpp | 43 program->statistics[statistic_sgpr_presched] = presched_demand.sgpr; in collect_presched_stats()
|
D | README.md | 294 …Typical issues might be a wrong instruction format leading to a wrong opcode or an sgpr used for v…
|
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Target/AMDGPU/ |
D | AMDGPUGenRegisterBankInfo.def | 137 /*32-bit sgpr*/ {&SGPROnly64BreakDown[0], 1}, 138 /*2 x 32-bit sgpr*/ {&SGPROnly64BreakDown[1], 2}, 139 /*64-bit sgpr */ {&SGPROnly64BreakDown[3], 1},
|
D | AMDGPU.td | 145 def FeatureSGPRInitBug : SubtargetFeature<"sgpr-init-bug",
|
/third_party/mesa3d/docs/relnotes/ |
D | 19.3.4.rst | 179 - aco: fix target calculation when vgpr spilling introduces sgpr
|
D | 17.3.4.rst | 95 - ac/nir: account for view index in the user sgpr allocation.
|
/third_party/mesa3d/src/amd/llvm/ |
D | ac_llvm_build.h | 179 void ac_build_optimization_barrier(struct ac_llvm_context *ctx, LLVMValueRef *pgpr, bool sgpr);
|
D | ac_llvm_build.c | 412 void ac_build_optimization_barrier(struct ac_llvm_context *ctx, LLVMValueRef *pgpr, bool sgpr) in ac_build_optimization_barrier() argument 418 const char *constraint = sgpr ? "=s,0" : "=v,0"; in ac_build_optimization_barrier()
|
/third_party/mesa3d/src/amd/compiler/tests/ |
D | test_sdwa.cpp | 334 BEGIN_TEST(optimize.sdwa.extract.sgpr)
|
D | helpers.cpp | 114 RegType type = input_spec[0] == 'v' ? RegType::vgpr : RegType::sgpr; in setup_cs()
|