Commit 51e7252a by Richard Sandiford Committed by Richard Sandiford

mips-protos.h (mips_emit_move): Declare.

gcc/
	* config/mips/mips-protos.h (mips_emit_move): Declare.
	* config/mips/mips.c (mips_emit_move): New function.
	(mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
	(mips_legitimize_const_move): Likewise.
	(mips_legitimize_move): Likewise.
	(mips_split_64bit_move): Likewise.
	(mips_restore_gp): Likewise.
	(mips_load_call_address): Likewise.
	(mips_emit_fcc_reload): Likewise.
	(mips_set_return_address): Likewise.
	(mips_block_move_straight): Likewise.
	(mips_block_move_loop): Likewise.
	(mips_setup_incoming_varargs): Likewise.
	(mips_save_reg): Likewise.
	(mips_expand_prologue): Likewise.
	(mips_restore_reg): Likewise.
	(mips_expand_epilogue): Likewise.
	(mips_output_mi_thunk): Likewise.
	(build_mips16_call_stub): Likewise.
	(mips_builtin_branch_and_move): Likewise.
	* config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
	* config/mips/mips.md (fixuns_truncdfsi2): Likewise.
	(fixuns_truncdfdi2): Likewise.
	(fixuns_truncsfsi2): Likewise.
	(fixuns_truncsfdi2): Likewise.
	(loadgp_absolute): Likewise.
	(builtin_setjmp_setup): Likewise.
	(builtin_longjmp): Likewise.
	(untyped_call): Likewise.

From-SVN: r127299
parent 390ea488
2007-08-08 Richard Sandiford <richard@codesourcery.com> 2007-08-08 Richard Sandiford <richard@codesourcery.com>
* config/mips/mips-protos.h (mips_emit_move): Declare.
* config/mips/mips.c (mips_emit_move): New function.
(mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
(mips_legitimize_const_move): Likewise.
(mips_legitimize_move): Likewise.
(mips_split_64bit_move): Likewise.
(mips_restore_gp): Likewise.
(mips_load_call_address): Likewise.
(mips_emit_fcc_reload): Likewise.
(mips_set_return_address): Likewise.
(mips_block_move_straight): Likewise.
(mips_block_move_loop): Likewise.
(mips_setup_incoming_varargs): Likewise.
(mips_save_reg): Likewise.
(mips_expand_prologue): Likewise.
(mips_restore_reg): Likewise.
(mips_expand_epilogue): Likewise.
(mips_output_mi_thunk): Likewise.
(build_mips16_call_stub): Likewise.
(mips_builtin_branch_and_move): Likewise.
* config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
* config/mips/mips.md (fixuns_truncdfsi2): Likewise.
(fixuns_truncdfdi2): Likewise.
(fixuns_truncsfsi2): Likewise.
(fixuns_truncsfdi2): Likewise.
(loadgp_absolute): Likewise.
(builtin_setjmp_setup): Likewise.
(builtin_longjmp): Likewise.
(untyped_call): Likewise.
2007-08-08 Richard Sandiford <richard@codesourcery.com>
* config/mips/mips-protos.h (mips_split_symbol): Add a mode and * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
an "rtx *" argument. Return a bool. an "rtx *" argument. Return a bool.
* config/mips/mips.c (mips_split_symbol): Accept arbitrary source * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
......
...@@ -171,6 +171,7 @@ extern int mips_idiv_insns (void); ...@@ -171,6 +171,7 @@ extern int mips_idiv_insns (void);
extern int fp_register_operand (rtx, enum machine_mode); extern int fp_register_operand (rtx, enum machine_mode);
extern int lo_operand (rtx, enum machine_mode); extern int lo_operand (rtx, enum machine_mode);
extern bool mips_legitimate_address_p (enum machine_mode, rtx, int); extern bool mips_legitimate_address_p (enum machine_mode, rtx, int);
extern rtx mips_emit_move (rtx, rtx);
extern bool mips_split_symbol (rtx, rtx, enum machine_mode, rtx *); extern bool mips_split_symbol (rtx, rtx, enum machine_mode, rtx *);
extern rtx mips_unspec_address (rtx, enum mips_symbol_type); extern rtx mips_unspec_address (rtx, enum mips_symbol_type);
extern bool mips_legitimize_address (rtx *, enum machine_mode); extern bool mips_legitimize_address (rtx *, enum machine_mode);
......
...@@ -2171,8 +2171,8 @@ typedef struct mips_args { ...@@ -2171,8 +2171,8 @@ typedef struct mips_args {
\ \
func_addr = plus_constant (ADDR, 32); \ func_addr = plus_constant (ADDR, 32); \
chain_addr = plus_constant (func_addr, GET_MODE_SIZE (ptr_mode)); \ chain_addr = plus_constant (func_addr, GET_MODE_SIZE (ptr_mode)); \
emit_move_insn (gen_rtx_MEM (ptr_mode, func_addr), FUNC); \ mips_emit_move (gen_rtx_MEM (ptr_mode, func_addr), FUNC); \
emit_move_insn (gen_rtx_MEM (ptr_mode, chain_addr), CHAIN); \ mips_emit_move (gen_rtx_MEM (ptr_mode, chain_addr), CHAIN); \
end_addr = gen_reg_rtx (Pmode); \ end_addr = gen_reg_rtx (Pmode); \
emit_insn (gen_add3_insn (end_addr, copy_rtx (ADDR), \ emit_insn (gen_add3_insn (end_addr, copy_rtx (ADDR), \
GEN_INT (TRAMPOLINE_SIZE))); \ GEN_INT (TRAMPOLINE_SIZE))); \
......
...@@ -2791,7 +2791,7 @@ ...@@ -2791,7 +2791,7 @@
if (reg1) /* Turn off complaints about unreached code. */ if (reg1) /* Turn off complaints about unreached code. */
{ {
emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, DFmode)); mips_emit_move (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, DFmode));
do_pending_stack_adjust (); do_pending_stack_adjust ();
emit_insn (gen_cmpdf (operands[1], reg1)); emit_insn (gen_cmpdf (operands[1], reg1));
...@@ -2803,8 +2803,8 @@ ...@@ -2803,8 +2803,8 @@
emit_barrier (); emit_barrier ();
emit_label (label1); emit_label (label1);
emit_move_insn (reg2, gen_rtx_MINUS (DFmode, operands[1], reg1)); mips_emit_move (reg2, gen_rtx_MINUS (DFmode, operands[1], reg1));
emit_move_insn (reg3, GEN_INT (trunc_int_for_mode mips_emit_move (reg3, GEN_INT (trunc_int_for_mode
(BITMASK_HIGH, SImode))); (BITMASK_HIGH, SImode)));
emit_insn (gen_fix_truncdfsi2 (operands[0], reg2)); emit_insn (gen_fix_truncdfsi2 (operands[0], reg2));
...@@ -2834,7 +2834,7 @@ ...@@ -2834,7 +2834,7 @@
real_2expN (&offset, 63); real_2expN (&offset, 63);
emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, DFmode)); mips_emit_move (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, DFmode));
do_pending_stack_adjust (); do_pending_stack_adjust ();
emit_insn (gen_cmpdf (operands[1], reg1)); emit_insn (gen_cmpdf (operands[1], reg1));
...@@ -2846,8 +2846,8 @@ ...@@ -2846,8 +2846,8 @@
emit_barrier (); emit_barrier ();
emit_label (label1); emit_label (label1);
emit_move_insn (reg2, gen_rtx_MINUS (DFmode, operands[1], reg1)); mips_emit_move (reg2, gen_rtx_MINUS (DFmode, operands[1], reg1));
emit_move_insn (reg3, GEN_INT (BITMASK_HIGH)); mips_emit_move (reg3, GEN_INT (BITMASK_HIGH));
emit_insn (gen_ashldi3 (reg3, reg3, GEN_INT (32))); emit_insn (gen_ashldi3 (reg3, reg3, GEN_INT (32)));
emit_insn (gen_fix_truncdfdi2 (operands[0], reg2)); emit_insn (gen_fix_truncdfdi2 (operands[0], reg2));
...@@ -2876,7 +2876,7 @@ ...@@ -2876,7 +2876,7 @@
real_2expN (&offset, 31); real_2expN (&offset, 31);
emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, SFmode)); mips_emit_move (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, SFmode));
do_pending_stack_adjust (); do_pending_stack_adjust ();
emit_insn (gen_cmpsf (operands[1], reg1)); emit_insn (gen_cmpsf (operands[1], reg1));
...@@ -2888,8 +2888,8 @@ ...@@ -2888,8 +2888,8 @@
emit_barrier (); emit_barrier ();
emit_label (label1); emit_label (label1);
emit_move_insn (reg2, gen_rtx_MINUS (SFmode, operands[1], reg1)); mips_emit_move (reg2, gen_rtx_MINUS (SFmode, operands[1], reg1));
emit_move_insn (reg3, GEN_INT (trunc_int_for_mode mips_emit_move (reg3, GEN_INT (trunc_int_for_mode
(BITMASK_HIGH, SImode))); (BITMASK_HIGH, SImode)));
emit_insn (gen_fix_truncsfsi2 (operands[0], reg2)); emit_insn (gen_fix_truncsfsi2 (operands[0], reg2));
...@@ -2918,7 +2918,7 @@ ...@@ -2918,7 +2918,7 @@
real_2expN (&offset, 63); real_2expN (&offset, 63);
emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, SFmode)); mips_emit_move (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, SFmode));
do_pending_stack_adjust (); do_pending_stack_adjust ();
emit_insn (gen_cmpsf (operands[1], reg1)); emit_insn (gen_cmpsf (operands[1], reg1));
...@@ -2930,8 +2930,8 @@ ...@@ -2930,8 +2930,8 @@
emit_barrier (); emit_barrier ();
emit_label (label1); emit_label (label1);
emit_move_insn (reg2, gen_rtx_MINUS (SFmode, operands[1], reg1)); mips_emit_move (reg2, gen_rtx_MINUS (SFmode, operands[1], reg1));
emit_move_insn (reg3, GEN_INT (BITMASK_HIGH)); mips_emit_move (reg3, GEN_INT (BITMASK_HIGH));
emit_insn (gen_ashldi3 (reg3, reg3, GEN_INT (32))); emit_insn (gen_ashldi3 (reg3, reg3, GEN_INT (32)));
emit_insn (gen_fix_truncsfdi2 (operands[0], reg2)); emit_insn (gen_fix_truncsfdi2 (operands[0], reg2));
...@@ -4148,7 +4148,7 @@ ...@@ -4148,7 +4148,7 @@
"" ""
[(const_int 0)] [(const_int 0)]
{ {
emit_move_insn (pic_offset_table_rtx, operands[0]); mips_emit_move (pic_offset_table_rtx, operands[0]);
DONE; DONE;
} }
[(set_attr "length" "8")]) [(set_attr "length" "8")])
...@@ -5096,7 +5096,7 @@ ...@@ -5096,7 +5096,7 @@
rtx addr; rtx addr;
addr = plus_constant (operands[0], GET_MODE_SIZE (Pmode) * 3); addr = plus_constant (operands[0], GET_MODE_SIZE (Pmode) * 3);
emit_move_insn (gen_rtx_MEM (Pmode, addr), pic_offset_table_rtx); mips_emit_move (gen_rtx_MEM (Pmode, addr), pic_offset_table_rtx);
DONE; DONE;
}) })
...@@ -5122,10 +5122,10 @@ ...@@ -5122,10 +5122,10 @@
/* This bit is similar to expand_builtin_longjmp except that it /* This bit is similar to expand_builtin_longjmp except that it
restores $gp as well. */ restores $gp as well. */
emit_move_insn (hard_frame_pointer_rtx, fp); mips_emit_move (hard_frame_pointer_rtx, fp);
emit_move_insn (pv, lab); mips_emit_move (pv, lab);
emit_stack_restore (SAVE_NONLOCAL, stack, NULL_RTX); emit_stack_restore (SAVE_NONLOCAL, stack, NULL_RTX);
emit_move_insn (gp, gpv); mips_emit_move (gp, gpv);
emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx)); emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx));
emit_insn (gen_rtx_USE (VOIDmode, stack_pointer_rtx)); emit_insn (gen_rtx_USE (VOIDmode, stack_pointer_rtx));
emit_insn (gen_rtx_USE (VOIDmode, gp)); emit_insn (gen_rtx_USE (VOIDmode, gp));
...@@ -5516,7 +5516,7 @@ ...@@ -5516,7 +5516,7 @@
for (i = 0; i < XVECLEN (operands[2], 0); i++) for (i = 0; i < XVECLEN (operands[2], 0); i++)
{ {
rtx set = XVECEXP (operands[2], 0, i); rtx set = XVECEXP (operands[2], 0, i);
emit_move_insn (SET_DEST (set), SET_SRC (set)); mips_emit_move (SET_DEST (set), SET_SRC (set));
} }
emit_insn (gen_blockage ()); emit_insn (gen_blockage ());
......
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