Commit 30f0eb2d by Alan Modra Committed by Alan Modra

re PR target/52107 (IBM 128bit long double constant loaded inefficiently)

	PR target/52107
	* config/rs6000/rs6000.c (rs6000_emit_move): Don't create DImode
	subregs of TFmode.

From-SVN: r183945
parent c5f14d62
2012-02-07 Alan Modra <amodra@gmail.com>
PR target/52107
* config/rs6000/rs6000.c (rs6000_emit_move): Don't create DImode
subregs of TFmode.
2012-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/50969
......
......@@ -7010,17 +7010,14 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
&& mode == TFmode && GET_CODE (operands[1]) == CONST_DOUBLE)
{
/* DImode is used, not DFmode, because simplify_gen_subreg doesn't
know how to get a DFmode SUBREG of a TFmode. */
enum machine_mode imode = (TARGET_E500_DOUBLE ? DFmode : DImode);
rs6000_emit_move (simplify_gen_subreg (imode, operands[0], mode, 0),
simplify_gen_subreg (imode, operands[1], mode, 0),
imode);
rs6000_emit_move (simplify_gen_subreg (imode, operands[0], mode,
GET_MODE_SIZE (imode)),
simplify_gen_subreg (imode, operands[1], mode,
GET_MODE_SIZE (imode)),
imode);
rs6000_emit_move (simplify_gen_subreg (DFmode, operands[0], mode, 0),
simplify_gen_subreg (DFmode, operands[1], mode, 0),
DFmode);
rs6000_emit_move (simplify_gen_subreg (DFmode, operands[0], mode,
GET_MODE_SIZE (DFmode)),
simplify_gen_subreg (DFmode, operands[1], mode,
GET_MODE_SIZE (DFmode)),
DFmode);
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment