Lines Matching defs:program

39 perfwarn(Program* program, bool cond, const char* msg, Instruction* instr)
52 aco_perfwarn(program, out);
501 Program* program;
519 if (instr->operands.size() && instr->operands[0].isLiteral() && ctx.program->gfx_level < GFX10)
550 ctx.program->gfx_level >= GFX9 ||
601 if (instr->isSDWA() && ctx.program->gfx_level < GFX9)
646 aco_ptr<Instruction> tmp = convert_to_SDWA(ctx.program->gfx_level, instr);
699 int limit = ctx.program->gfx_level >= GFX10 ? 2 : 1;
718 if (ctx.program->gfx_level < GFX10)
855 ((ctx.program->gfx_level == GFX6 && info.val <= 0x3FF) ||
856 (ctx.program->gfx_level == GFX7 && info.val <= 0xFFFFFFFF) ||
857 (ctx.program->gfx_level >= GFX8 && info.val <= 0xFFFFF))) {
860 base.regClass() == s1 && offset <= 0xFFFFF && ctx.program->gfx_level >= GFX9 &&
916 return Operand::get_const(ctx.program->gfx_level, info.val, bits / 8u);
952 Operand op = Operand::get_const(ctx.program->gfx_level, val, bits / 8u);
954 op = Operand::get_const(ctx.program->gfx_level, val | 0xffff0000, 4);
956 op = Operand::get_const(ctx.program->gfx_level, val << 16, 4);
1077 } else if (can_use_SDWA(ctx.program->gfx_level, instr, true) &&
1078 (tmp.type() == RegType::vgpr || ctx.program->gfx_level >= GFX9)) {
1083 can_use_opsel(ctx.program->gfx_level, instr->opcode, idx) &&
1133 } else if (can_use_SDWA(ctx.program->gfx_level, instr, true) &&
1134 (tmp.type() == RegType::vgpr || ctx.program->gfx_level >= GFX9)) {
1180 if (ctx.program->gfx_level <= GFX8) {
1256 bool negative_unaligned_scratch_offset_bug = ctx.program->gfx_level == GFX10;
1257 int32_t min = ctx.program->dev.scratch_global_offset_min;
1258 int32_t max = ctx.program->dev.scratch_global_offset_max;
1275 perfwarn(ctx.program, all_const, "All instruction operands are constant", instr.get());
1280 perfwarn(ctx.program, is_copy && !instr->usesModifiers(), "Use p_parallelcopy instead",
1386 (!instr->isSDWA() || ctx.program->gfx_level >= GFX9)) {
1388 perfwarn(ctx.program, instr->opcode == aco_opcode::v_cndmask_b32 && i == 2,
1421 bool vaddr_prevent_overflow = mubuf.swizzled && ctx.program->gfx_level < GFX9;
1465 ctx.program->gfx_level >= GFX10_3 &&
1480 bool has_usable_ds_offset = ctx.program->gfx_level >= GFX7;
1622 ctx.info[def.tempId()].set_constant(ctx.program->gfx_level, val & mask);
1654 ctx.info[instr->definitions[i].tempId()].set_constant(ctx.program->gfx_level,
1690 Operand::get_const(ctx.program->gfx_level, val, instr->definitions[0].bytes());
1740 ctx.program->gfx_level, instr->operands[0].constantValue64());
1759 if (!ctx.program->needs_wqm)
1760 ctx.info[instr->definitions[0].tempId()].set_constant(ctx.program->gfx_level, 0u);
1810 ctx.info[instr->definitions[0].tempId()].set_constant(ctx.program->gfx_level, 0u);
1936 } else if ((ctx.program->stage.num_sw_stages() > 1 ||
1937 ctx.program->stage.hw == HWStage::NGG) &&
2100 if (instr->definitions[0].regClass() != ctx.program->lane_mask)
2153 if (num_sgprs > (ctx.program->gfx_level >= GFX10 ? 2 : 1))
2197 if (instr->definitions[0].regClass() != ctx.program->lane_mask)
2298 if (instr->definitions[0].regClass() != ctx.program->lane_mask)
2825 } else if (ctx.program->gfx_level >= GFX10 ||
2838 Definition(ctx.program->allocateTmp(ctx.program->lane_mask));
3075 if (ctx.program->gfx_level >= GFX10 && !is_shift64)
3182 bool can_use_omod = (can_vop3 || ctx.program->gfx_level >= GFX9) && !instr->isVOP3P();
3248 if (!can_use_SDWA(ctx.program->gfx_level, instr, true))
3332 } else if (ctx.program->gfx_level >= GFX10 ||
3598 if (ctx.program->gfx_level < GFX9)
3602 if (ctx.program->gfx_level == GFX9 && ctx.fp_mode.denorm16_64)
3616 if (instr->opcode == aco_opcode::v_fma_f32 && !ctx.program->dev.fused_mad_mix &&
3955 bool has_fma = mad16 || mad64 || (legacy && ctx.program->gfx_level >= GFX10_3) ||
3956 (mad32 && !legacy && !mad_mix && ctx.program->dev.has_fast_fma32) ||
3957 (mad_mix && ctx.program->dev.fused_mad_mix);
3958 bool has_mad = mad_mix ? !ctx.program->dev.fused_mad_mix
3959 : ((mad32 && ctx.program->gfx_level < GFX10_3) ||
3960 (mad16 && ctx.program->gfx_level <= GFX9));
4087 assert(emit_fma == (ctx.program->gfx_level >= GFX10_3));
4090 mad_op = emit_fma ? (ctx.program->gfx_level == GFX8 ? aco_opcode::v_fma_legacy_f16
4092 : (ctx.program->gfx_level == GFX8 ? aco_opcode::v_mad_legacy_f16
4141 } else if (instr->opcode == aco_opcode::v_or_b32 && ctx.program->gfx_level >= GFX9) {
4148 } else if (instr->opcode == aco_opcode::v_xor_b32 && ctx.program->gfx_level >= GFX10) {
4157 ctx.program->gfx_level == GFX8 ? aco_opcode::v_mad_legacy_u16 : aco_opcode::v_mad_u16,
4167 } else if (ctx.program->gfx_level >= GFX9 && !instr->usesModifiers()) {
4201 } else if (instr->opcode == aco_opcode::v_lshlrev_b32 && ctx.program->gfx_level >= GFX9) {
4205 ctx.program->gfx_level >= GFX9) {
4229 (!some_gfx9_only || ctx.program->gfx_level >= GFX9)) {
4385 ctx.program->gfx_level < GFX10)
4410 if ((!has_sgpr || ctx.program->gfx_level >= GFX10) && has_vgpr) {
4424 if (ctx.program->gfx_level < GFX10 && instr->operands[!i].isTemp() &&
4534 if (instr->isSDWA() || (instr->isVOP3() && ctx.program->gfx_level < GFX10) ||
4535 (instr->isVOP3P() && ctx.program->gfx_level < GFX10))
4546 (ctx.program->gfx_level >= GFX10 && (can_use_VOP3(ctx, instr) || instr->isVOP3P())))
4591 if (ctx.program->gfx_level >= GFX10 && !is_shift64)
4788 optimize(Program* program)
4791 ctx.program = program;
4792 std::vector<ssa_info> info(program->peekAllocationId());
4796 for (Block& block : program->blocks) {
4802 ctx.uses = dead_code_analysis(program);
4805 for (Block& block : program->blocks) {
4812 for (auto block_rit = program->blocks.rbegin(); block_rit != program->blocks.rend();
4822 for (Block& block : program->blocks) {