Skip to content

Commit

Permalink
refs #181: fix emitted code and set d0/d1 properly
Browse files Browse the repository at this point in the history
  • Loading branch information
bebbo committed Jun 13, 2022
1 parent bf233da commit f6de318
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions gcc/config/m68k/m68k.md
Original file line number Diff line number Diff line change
Expand Up @@ -8921,25 +8921,23 @@
bas->unchanging = 1;
emit_move_insn (a6, bas);

rtx_insn * call = emit_call_insn (gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-<monoffs>)), const0_rtx));
rtx_insn * call = emit_call_insn (gen_rtx_SET (gen_raw_REG (SFmode, D0_REG), gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-<monoffs>)), const0_rtx)));

if (0 == strcmp("tentox", "<monadm>") || 0 == strcmp("twotox", "<monadm>"))
if (0 == strcmp("tentox", "<monadm>") || 0 == strcmp("twotox", "<monadm>")) // use d0, d1
add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(SFmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(SFmode, d1),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d1),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))))));
else
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))));
else // use d0
add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(SFmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d1),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))));
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))));

emit_move_insn (operands[0], d0);

Expand Down Expand Up @@ -8985,25 +8983,21 @@
bas->unchanging = 1;
emit_move_insn (a6, bas);

rtx_insn * call = emit_call_insn (gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-<monoffs>)), const0_rtx));
rtx_insn * call = emit_call_insn (gen_rtx_SET (gen_raw_REG (DFmode, D0_REG), gen_acall (gen_rtx_PLUS(SImode, a6, GEN_INT(-<monoffs>)), const0_rtx)));

if (0 == strcmp("tentox", "<monadm>") || 0 == strcmp("twotox", "<monadm>"))
if (0 == strcmp("tentox", "<monadm>") || 0 == strcmp("twotox", "<monadm>")) // use d0, d2
add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, d1),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (DFmode, D1_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, gen_raw_REG (DFmode, D2_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))))));
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0)))))));
else
add_function_usage_to (call, gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_USE(DFmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, d0),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (DFmode, D1_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (SImode, A1_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP0_REG)),
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))))));
gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_CLOBBER(VOIDmode, gen_raw_REG (XFmode, FP1_REG)), 0))))));

emit_move_insn (operands[0], d0);

Expand Down

0 comments on commit f6de318

Please sign in to comment.