Lines Matching refs:definition
224 /* we might still be able to put the definition in the high half,
786 /* check if we moved a definition: change the register and remove copy */
790 // FIXME: ensure that the definition can use this reg
802 /* check if we moved another parallelcopy definition */
1100 /* check if this is a dead operand, then we can re-use the space from the definition
1121 /* Try to find space within the bounds but outside of the definition */
1135 /* create parallelcopy pair (without definition id) */
1224 /* create parallelcopy pair (without definition id) */
1272 /* find the best position to place the definition */
1352 /* now, we figured the placement for our definition */
1355 /* p_create_vector: also re-place killed operands in the definition space */
1732 /* test for each operand which definition placement causes the least shuffle instructions */
2066 Definition& definition = phi->definitions[0];
2067 if (definition.isFixed())
2080 if (!get_reg_specified(ctx, register_file, definition.regClass(), phi, reg))
2083 definition.setFixed(reg);
2084 register_file.fill(definition);
2085 ctx.assignments[definition.tempId()].set(definition);
2090 Definition& definition = phi->definitions[0];
2091 if (definition.isFixed())
2095 if (ctx.assignments[definition.tempId()].affinity &&
2096 ctx.assignments[ctx.assignments[definition.tempId()].affinity].assigned) {
2097 assignment& affinity = ctx.assignments[ctx.assignments[definition.tempId()].affinity];
2098 assert(affinity.rc == definition.regClass());
2099 if (get_reg_specified(ctx, register_file, definition.regClass(), phi, affinity.reg)) {
2100 definition.setFixed(affinity.reg);
2101 register_file.fill(definition);
2102 ctx.assignments[definition.tempId()].set(definition);
2114 if (get_reg_specified(ctx, register_file, definition.regClass(), phi, reg)) {
2115 definition.setFixed(reg);
2116 register_file.fill(definition);
2117 ctx.assignments[definition.tempId()].set(definition);
2128 Definition& definition = phi->definitions[0];
2129 if (definition.isFixed())
2132 definition.setFixed(
2133 get_reg_phi(ctx, live_in, register_file, instructions, block, phi, definition.getTemp()));
2135 register_file.fill(definition);
2136 ctx.assignments[definition.tempId()].set(definition);
2679 * We consider them incomplete phis and only handle the definition. */
2787 * We expect that the definition has the same size as the operand, otherwise the new
2823 auto& definition = instr->definitions[i];
2824 if (!definition.isFixed())
2827 adjust_max_used_regs(ctx, definition.regClass(), definition.physReg());
2829 if (register_file.test(definition.physReg(), definition.bytes())) {
2830 const PhysRegInterval def_regs{definition.physReg(), definition.size()};
2843 DefInfo info(ctx, instr, definition.regClass(), -1);
2852 if (!definition.isTemp())
2855 ctx.assignments[definition.tempId()].set(definition);
2856 register_file.fill(definition);
2861 Definition* definition = &instr->definitions[i];
2863 if (definition->isFixed() || !definition->isTemp())
2869 RegClass rc = definition->regClass();
2873 definition->setFixed(reg);
2880 definition->setFixed(reg);
2885 definition->setFixed(reg);
2891 instr->operands[i].getTemp().type() == definition->getTemp().type() &&
2892 !register_file.test(reg, definition->bytes()))
2893 definition->setFixed(reg);
2896 reg.reg_b += definition->bytes() * instr->operands[1].constantValue();
2897 if (get_reg_specified(ctx, register_file, definition->regClass(), instr, reg))
2898 definition->setFixed(reg);
2900 PhysReg reg = get_reg_create_vector(ctx, register_file, definition->getTemp(),
2903 definition->setFixed(reg);
2906 if (!definition->isFixed()) {
2907 Temp tmp = definition->getTemp();
2908 if (definition->regClass().is_subdword() && definition->bytes() < 4) {
2910 definition->setFixed(reg);
2913 definition = &instr->definitions[i]; /* add_subdword_definition can invalidate
2917 definition->setFixed(get_reg(ctx, register_file, tmp, parallelcopy, instr));
2925 definition->isFixed() &&
2926 ((definition->getTemp().type() == RegType::vgpr && definition->physReg() >= 256) ||
2927 (definition->getTemp().type() != RegType::vgpr && definition->physReg() < 256)));
2929 ctx.assignments[definition->tempId()].set(*definition);
2930 register_file.fill(*definition);
3008 /* some instructions need VOP3 encoding if operand/definition is not assigned to VCC */