Lines Matching refs:rld

130 struct reload rld[MAX_RELOADS];
429 if (rld[s_reload].secondary_p
430 && (reg_class_subset_p (class, rld[s_reload].class)
431 || reg_class_subset_p (rld[s_reload].class, class))
432 && ((in_p && rld[s_reload].inmode == mode)
433 || (! in_p && rld[s_reload].outmode == mode))
434 && ((in_p && rld[s_reload].secondary_in_reload == t_reload)
435 || (! in_p && rld[s_reload].secondary_out_reload == t_reload))
436 && ((in_p && rld[s_reload].secondary_in_icode == t_icode)
437 || (! in_p && rld[s_reload].secondary_out_icode == t_icode))
439 && MERGABLE_RELOADS (secondary_type, rld[s_reload].when_needed,
440 opnum, rld[s_reload].opnum))
443 rld[s_reload].inmode = mode;
445 rld[s_reload].outmode = mode;
447 if (reg_class_subset_p (class, rld[s_reload].class))
448 rld[s_reload].class = class;
450 rld[s_reload].opnum = MIN (rld[s_reload].opnum, opnum);
451 rld[s_reload].optional &= optional;
452 rld[s_reload].secondary_p = 1;
453 if (MERGE_TO_OTHER (secondary_type, rld[s_reload].when_needed,
454 opnum, rld[s_reload].opnum))
455 rld[s_reload].when_needed = RELOAD_OTHER;
478 rld[s_reload].in = rld[s_reload].out = 0;
479 rld[s_reload].class = class;
481 rld[s_reload].inmode = in_p ? mode : VOIDmode;
482 rld[s_reload].outmode = ! in_p ? mode : VOIDmode;
483 rld[s_reload].reg_rtx = 0;
484 rld[s_reload].optional = optional;
485 rld[s_reload].inc = 0;
487 rld[s_reload].nocombine = 1;
488 rld[s_reload].in_reg = 0;
489 rld[s_reload].out_reg = 0;
490 rld[s_reload].opnum = opnum;
491 rld[s_reload].when_needed = secondary_type;
492 rld[s_reload].secondary_in_reload = in_p ? t_reload : -1;
493 rld[s_reload].secondary_out_reload = ! in_p ? t_reload : -1;
494 rld[s_reload].secondary_in_icode = in_p ? t_icode : CODE_FOR_nothing;
495 rld[s_reload].secondary_out_icode
497 rld[s_reload].secondary_p = 1;
735 if ((reg_class_subset_p (class, rld[i].class)
736 || reg_class_subset_p (rld[i].class, class))
738 && (rld[i].reg_rtx == 0
740 true_regnum (rld[i].reg_rtx)))
741 && ((in != 0 && MATCHES (rld[i].in, in) && ! dont_share
742 && (out == 0 || rld[i].out == 0 || MATCHES (rld[i].out, out)))
743 || (out != 0 && MATCHES (rld[i].out, out)
744 && (in == 0 || rld[i].in == 0 || MATCHES (rld[i].in, in))))
745 && (rld[i].out == 0 || ! earlyclobber_operand_p (rld[i].out))
747 && MERGABLE_RELOADS (type, rld[i].when_needed, opnum, rld[i].opnum))
756 if ((reg_class_subset_p (class, rld[i].class)
757 || reg_class_subset_p (rld[i].class, class))
760 && (rld[i].reg_rtx == 0
762 true_regnum (rld[i].reg_rtx)))
763 && out == 0 && rld[i].out == 0 && rld[i].in != 0
765 && GET_RTX_CLASS (GET_CODE (rld[i].in)) == RTX_AUTOINC
766 && MATCHES (XEXP (rld[i].in, 0), in))
767 || (REG_P (rld[i].in)
769 && MATCHES (XEXP (in, 0), rld[i].in)))
770 && (rld[i].out == 0 || ! earlyclobber_operand_p (rld[i].out))
772 && MERGABLE_RELOADS (type, rld[i].when_needed,
773 opnum, rld[i].opnum))
778 *p_in = rld[i].in;
1333 rld[i].in = in;
1334 rld[i].out = out;
1335 rld[i].class = class;
1336 rld[i].inmode = inmode;
1337 rld[i].outmode = outmode;
1338 rld[i].reg_rtx = 0;
1339 rld[i].optional = optional;
1340 rld[i].inc = 0;
1341 rld[i].nocombine = 0;
1342 rld[i].in_reg = inloc ? *inloc : 0;
1343 rld[i].out_reg = outloc ? *outloc : 0;
1344 rld[i].opnum = opnum;
1345 rld[i].when_needed = type;
1346 rld[i].secondary_in_reload = secondary_in_reload;
1347 rld[i].secondary_out_reload = secondary_out_reload;
1348 rld[i].secondary_in_icode = secondary_in_icode;
1349 rld[i].secondary_out_icode = secondary_out_icode;
1350 rld[i].secondary_p = 0;
1375 && GET_MODE_SIZE (inmode) > GET_MODE_SIZE (rld[i].inmode))
1376 rld[i].inmode = inmode;
1378 && GET_MODE_SIZE (outmode) > GET_MODE_SIZE (rld[i].outmode))
1379 rld[i].outmode = outmode;
1397 if (rld[i].in != in && rtx_equal_p (in, rld[i].in)
1398 && ! (rld[i].optional && optional))
1402 if (opnum > rld[i].opnum)
1405 in = rld[i].in;
1406 in_reg = rld[i].in_reg;
1409 remove_address_replacements (rld[i].in);
1411 rld[i].in = in;
1412 rld[i].in_reg = in_reg;
1416 rld[i].out = out;
1417 rld[i].out_reg = outloc ? *outloc : 0;
1419 if (reg_class_subset_p (class, rld[i].class))
1420 rld[i].class = class;
1421 rld[i].optional &= optional;
1422 if (MERGE_TO_OTHER (type, rld[i].when_needed,
1423 opnum, rld[i].opnum))
1424 rld[i].when_needed = RELOAD_OTHER;
1425 rld[i].opnum = MIN (rld[i].opnum, opnum);
1433 rld[i].nocombine = 1;
1447 rld[i].out = 0;
1448 rld[i].inc = find_inc_amount (PATTERN (this_insn), in);
1452 gcc_assert (rld[i].inc != 0);
1485 If one of them is acceptable, set rld[i].reg_rtx
1488 if (in != 0 && out != 0 && in != out && rld[i].reg_rtx == 0)
1490 rld[i].reg_rtx = find_dummy_reload (in, out, inloc, outloc,
1492 rld[i].class, i,
1499 if (rld[i].reg_rtx == out
1503 rld[i].in = out;
1518 if (rld[i].reg_rtx == 0 && in != 0 && hard_regs_live_known)
1582 rld[i].reg_rtx = gen_rtx_REG (rel_mode, regno);
1675 remove_address_replacements (rld[i].in);
1676 rld[i].in = 0;
1708 if (rld[i].out != 0)
1715 if (output_reload < 0 || rld[output_reload].optional)
1720 if (rld[output_reload].in != 0)
1724 if (earlyclobber_operand_p (rld[output_reload].out))
1732 if ((rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS
1733 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
1734 && rld[i].opnum == rld[output_reload].opnum)
1740 if (rld[i].in && ! rld[i].optional && ! rld[i].nocombine
1742 && rld[i].when_needed != RELOAD_FOR_OUTPUT_ADDRESS
1743 && rld[i].when_needed != RELOAD_FOR_OUTADDR_ADDRESS
1744 && rld[i].when_needed != RELOAD_OTHER
1745 && (CLASS_MAX_NREGS (rld[i].class, rld[i].inmode)
1746 == CLASS_MAX_NREGS (rld[output_reload].class,
1747 rld[output_reload].outmode))
1748 && rld[i].inc == 0
1749 && rld[i].reg_rtx == 0
1753 && (secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[i].opnum] == 0
1754 || secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum] == 0
1755 || rtx_equal_p (secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[i].opnum],
1756 secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum]))
1759 ? (rld[i].class == rld[output_reload].class)
1760 : (reg_class_subset_p (rld[i].class,
1761 rld[output_reload].class)
1762 || reg_class_subset_p (rld[output_reload].class,
1763 rld[i].class)))
1764 && (MATCHES (rld[i].in, rld[output_reload].out)
1768 || (! reg_overlap_mentioned_for_reload_p (rld[output_reload].out,
1769 rld[i].in)
1776 && ! (REG_P (rld[i].in)
1777 && reg_overlap_mentioned_for_reload_p (rld[i].in,
1778 rld[output_reload].out))))
1779 && ! reload_inner_reg_of_subreg (rld[i].in, rld[i].inmode,
1780 rld[i].when_needed != RELOAD_FOR_INPUT)
1781 && (reg_class_size[(int) rld[i].class]
1785 && (rld[i].when_needed == RELOAD_FOR_INPUT
1786 || rld[i].when_needed == RELOAD_FOR_OUTPUT))
1791 rld[i].out = rld[output_reload].out;
1792 rld[i].out_reg = rld[output_reload].out_reg;
1793 rld[i].outmode = rld[output_reload].outmode;
1795 rld[output_reload].out = 0;
1797 rld[i].when_needed = RELOAD_OTHER;
1799 if (rld[output_reload].secondary_out_reload != -1)
1801 rld[i].secondary_out_reload
1802 = rld[output_reload].secondary_out_reload;
1803 rld[i].secondary_out_icode
1804 = rld[output_reload].secondary_out_icode;
1809 if (secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum] != 0)
1810 secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[i].opnum]
1811 = secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum];
1814 if (reg_class_subset_p (rld[output_reload].class,
1815 rld[i].class))
1816 rld[i].class = rld[output_reload].class;
1847 rld[output_reload].out)
1849 && HARD_REGNO_MODE_OK (REGNO (XEXP (note, 0)), rld[output_reload].outmode)
1850 && TEST_HARD_REG_BIT (reg_class_contents[(int) rld[output_reload].class],
1852 && (hard_regno_nregs[REGNO (XEXP (note, 0))][rld[output_reload].outmode]
1856 && ((secondary_out = rld[output_reload].secondary_out_reload) == -1
1858 (reg_class_contents[(int) rld[secondary_out].class],
1860 && ((secondary_out = rld[secondary_out].secondary_out_reload) == -1
1862 (reg_class_contents[(int) rld[secondary_out].class],
1871 rld[output_reload].reg_rtx
1872 = gen_rtx_REG (rld[output_reload].outmode,
1889 to be computed, clear out rld[FOR_REAL].out.
2048 rld[for_real].out = 0;
3805 if (rld[i].opnum == commutative)
3806 rld[i].opnum = commutative + 1;
3807 else if (rld[i].opnum == commutative + 1)
3808 rld[i].opnum = commutative;
3919 rld[operand_reloadnum[i]].inc
3931 if (rld[j].opnum == i)
3933 if (rld[j].when_needed == RELOAD_FOR_OUTPUT_ADDRESS)
3934 rld[j].when_needed = RELOAD_FOR_INPUT_ADDRESS;
3935 else if (rld[j].when_needed
3937 rld[j].when_needed = RELOAD_FOR_INPADDR_ADDRESS;
4168 if (rld[i].reg_rtx == 0
4169 && rld[i].in != 0
4170 && REG_P (rld[i].in)
4171 && rld[i].out == 0)
4173 rld[i].reg_rtx
4174 = find_equiv_reg (rld[i].in, insn, rld[i].class, -1,
4175 static_reload_reg_p, 0, rld[i].inmode);
4178 if (rld[i].reg_rtx)
4179 rld[i].in = rld[i].reg_rtx;
4204 if ((rld[i].when_needed == RELOAD_FOR_INPUT_ADDRESS
4205 || rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS
4206 || rld[i].when_needed == RELOAD_FOR_INPADDR_ADDRESS
4207 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
4208 && (rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
4209 || rld[j].when_needed == RELOAD_FOR_OUTPUT_ADDRESS
4210 || rld[j].when_needed == RELOAD_FOR_INPADDR_ADDRESS
4211 || rld[j].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
4212 && rtx_equal_p (rld[i].in, rld[j].in)
4213 && (operand_reloadnum[rld[i].opnum] < 0
4214 || rld[operand_reloadnum[rld[i].opnum]].optional)
4215 && (operand_reloadnum[rld[j].opnum] < 0
4216 || rld[operand_reloadnum[rld[j].opnum]].optional)
4217 && (goal_alternative_matches[rld[i].opnum] == rld[j].opnum
4218 || (goal_alternative_matches[rld[j].opnum]
4219 == rld[i].opnum)))
4225 if (rld[i].when_needed == RELOAD_FOR_INPADDR_ADDRESS
4226 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
4227 rld[i].when_needed = RELOAD_FOR_OPADDR_ADDR;
4229 rld[i].when_needed = RELOAD_FOR_OPERAND_ADDRESS;
4230 rld[j].in = 0;
4253 if (rld[i].secondary_p
4254 && rld[i].when_needed == operand_type[rld[i].opnum])
4255 rld[i].when_needed = address_type[rld[i].opnum];
4257 if ((rld[i].when_needed == RELOAD_FOR_INPUT_ADDRESS
4258 || rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS
4259 || rld[i].when_needed == RELOAD_FOR_INPADDR_ADDRESS
4260 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
4261 && (operand_reloadnum[rld[i].opnum] < 0
4262 || rld[operand_reloadnum[rld[i].opnum]].optional))
4267 if ((rld[i].when_needed == RELOAD_FOR_INPUT_ADDRESS
4268 || rld[i].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
4269 && rld[i].secondary_in_reload != -1)
4271 int secondary_in_reload = rld[i].secondary_in_reload;
4273 rld[secondary_in_reload].when_needed = RELOAD_FOR_OPADDR_ADDR;
4277 && rld[secondary_in_reload].secondary_in_reload != -1)
4278 rld[rld[secondary_in_reload].secondary_in_reload].when_needed
4282 if ((rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS
4283 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
4284 && rld[i].secondary_out_reload != -1)
4286 int secondary_out_reload = rld[i].secondary_out_reload;
4288 rld[secondary_out_reload].when_needed = RELOAD_FOR_OPADDR_ADDR;
4292 && rld[secondary_out_reload].secondary_out_reload != -1)
4293 rld[rld[secondary_out_reload].secondary_out_reload].when_needed
4297 if (rld[i].when_needed == RELOAD_FOR_INPADDR_ADDRESS
4298 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
4299 rld[i].when_needed = RELOAD_FOR_OPADDR_ADDR;
4301 rld[i].when_needed = RELOAD_FOR_OPERAND_ADDRESS;
4304 if ((rld[i].when_needed == RELOAD_FOR_INPUT_ADDRESS
4305 || rld[i].when_needed == RELOAD_FOR_INPADDR_ADDRESS)
4306 && operand_reloadnum[rld[i].opnum] >= 0
4307 && (rld[operand_reloadnum[rld[i].opnum]].when_needed
4309 rld[i].when_needed = RELOAD_FOR_OTHER_ADDRESS;
4311 if (goal_alternative_matches[rld[i].opnum] >= 0)
4312 rld[i].opnum = goal_alternative_matches[rld[i].opnum];
4353 switch (rld[i].when_needed)
4363 if (++first_inpaddr_num[rld[i].opnum] >= 0)
4365 first_inpaddr_num[rld[i].opnum] = i;
4370 if (++first_outpaddr_num[rld[i].opnum] >= 0)
4372 first_outpaddr_num[rld[i].opnum] = i;
4388 switch (rld[i].when_needed)
4395 first_num = first_inpaddr_num[rld[i].opnum];
4399 first_num = first_outpaddr_num[rld[i].opnum];
4408 rld[i].when_needed = type;
4415 if (rld[j].when_needed == type
4416 && (rld[i].secondary_p
4417 ? rld[j].secondary_in_reload == i
4418 : reg_mentioned_p (rld[i].in, rld[j].in)))
4420 rld[i].when_needed = type;
4435 if (rld[i].in != 0 && rld[i].out == 0
4436 && (rld[i].when_needed == RELOAD_FOR_OPERAND_ADDRESS
4437 || rld[i].when_needed == RELOAD_FOR_OPADDR_ADDR
4438 || rld[i].when_needed == RELOAD_FOR_OTHER_ADDRESS))
4440 if (i != j && rld[j].in != 0 && rld[j].out == 0
4441 && rld[j].when_needed == rld[i].when_needed
4442 && MATCHES (rld[i].in, rld[j].in)
4443 && rld[i].class == rld[j].class
4444 && !rld[i].nocombine && !rld[j].nocombine
4445 && rld[i].reg_rtx == rld[j].reg_rtx)
4447 rld[i].opnum = MIN (rld[i].opnum, rld[j].opnum);
4449 rld[j].in = 0;
4458 gcc_assert (rld[i].in == 0
4459 || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS
4460 || rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS);
4466 rld[i].mode
4467 = (rld[i].inmode == VOIDmode
4468 || (GET_MODE_SIZE (rld[i].outmode)
4469 > GET_MODE_SIZE (rld[i].inmode)))
4470 ? rld[i].outmode : rld[i].inmode;
4472 rld[i].nregs = CLASS_MAX_NREGS (rld[i].class, rld[i].mode);
4478 if (rld[i].when_needed == RELOAD_FOR_INPUT
4481 && SET_SRC (PATTERN (insn)) == rld[i].in)
4487 && TEST_HARD_REG_BIT (reg_class_contents[rld[i].class], regno)
4488 && HARD_REGNO_MODE_OK (regno, rld[i].mode))
4490 int nr = hard_regno_nregs[regno][rld[i].mode];
4494 if (! TEST_HARD_REG_BIT (reg_class_contents[rld[i].class], regno + nri))
4498 rld[i].reg_rtx = dest;
5749 rld[reloadnum].inc
5788 rld[reloadnum].inc
6156 rtx reloadreg = rld[r->what].reg_rtx;
6233 gcc_assert (rld[r->what].optional);
6324 rtx reloadreg = rld[r->what].reg_rtx;
6865 if (rld[i].reg_rtx != 0 && rld[i].in)
6867 int regno1 = REGNO (rld[i].reg_rtx);
6869 [GET_MODE (rld[i].reg_rtx)];
7268 if (rld[r].in != 0)
7271 GET_MODE_NAME (rld[r].inmode));
7272 print_inline_rtx (f, rld[r].in, 24);
7276 if (rld[r].out != 0)
7279 GET_MODE_NAME (rld[r].outmode));
7280 print_inline_rtx (f, rld[r].out, 24);
7284 fprintf (f, "%s, ", reg_class_names[(int) rld[r].class]);
7287 reload_when_needed_name[(int) rld[r].when_needed],
7288 rld[r].opnum);
7290 if (rld[r].optional)
7293 if (rld[r].nongroup)
7296 if (rld[r].inc != 0)
7297 fprintf (f, ", inc by %d", rld[r].inc);
7299 if (rld[r].nocombine)
7302 if (rld[r].secondary_p)
7305 if (rld[r].in_reg != 0)
7308 print_inline_rtx (f, rld[r].in_reg, 24);
7311 if (rld[r].out_reg != 0)
7314 print_inline_rtx (f, rld[r].out_reg, 24);
7317 if (rld[r].reg_rtx != 0)
7320 print_inline_rtx (f, rld[r].reg_rtx, 24);
7324 if (rld[r].secondary_in_reload != -1)
7327 prefix, rld[r].secondary_in_reload);
7331 if (rld[r].secondary_out_reload != -1)
7333 prefix, rld[r].secondary_out_reload);
7336 if (rld[r].secondary_in_icode != CODE_FOR_nothing)
7339 insn_data[rld[r].secondary_in_icode].name);
7343 if (rld[r].secondary_out_icode != CODE_FOR_nothing)
7345 insn_data[rld[r].secondary_out_icode].name);