Home
last modified time | relevance | path

Searched refs:sgpr (Results 1 – 25 of 34) sorted by relevance

12

/third_party/mesa3d/src/amd/compiler/
Daco_live_var_analysis.cpp98 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 …]
Daco_validate.cpp323 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 …]
Daco_ir.h303 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 …]
Daco_spill.cpp477 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 …]
Daco_instruction_selection_setup.cpp244 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()
Daco_optimizer.cpp564 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 …]
Daco_register_allocation.cpp198 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 …]
Daco_instruction_selection.cpp274 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 …]
Daco_insert_NOPs.cpp418 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()
Daco_lower_to_cssa.cpp103 if (def.regClass().type() == RegType::sgpr && !op.isTemp()) { in collect_parallelcopies()
500 emit_copies_block(bld, ltg, RegType::sgpr); in emit_parallelcopies()
Daco_print_ir.cpp94 } 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()
Daco_lower_to_hw_instr.cpp433 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()
Daco_ir.cpp302 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()
Daco_lower_phis.cpp325 assert(phi_src.regClass().type() == RegType::sgpr); in lower_subdword_phis()
Daco_optimizer_postRA.cpp123 assert(def.regClass().type() != RegType::sgpr || def.physReg().reg() <= 255); in save_reg_writes()
Daco_statistics.cpp43 program->statistics[statistic_sgpr_presched] = presched_demand.sgpr; in collect_presched_stats()
DREADME.md294 …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/
DAMDGPUGenRegisterBankInfo.def137 /*32-bit sgpr*/ {&SGPROnly64BreakDown[0], 1},
138 /*2 x 32-bit sgpr*/ {&SGPROnly64BreakDown[1], 2},
139 /*64-bit sgpr */ {&SGPROnly64BreakDown[3], 1},
DAMDGPU.td145 def FeatureSGPRInitBug : SubtargetFeature<"sgpr-init-bug",
/third_party/mesa3d/docs/relnotes/
D19.3.4.rst179 - aco: fix target calculation when vgpr spilling introduces sgpr
D17.3.4.rst95 - ac/nir: account for view index in the user sgpr allocation.
/third_party/mesa3d/src/amd/llvm/
Dac_llvm_build.h179 void ac_build_optimization_barrier(struct ac_llvm_context *ctx, LLVMValueRef *pgpr, bool sgpr);
Dac_llvm_build.c412 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/
Dtest_sdwa.cpp334 BEGIN_TEST(optimize.sdwa.extract.sgpr)
Dhelpers.cpp114 RegType type = input_spec[0] == 'v' ? RegType::vgpr : RegType::sgpr; in setup_cs()

12