Commit 8ec12e35 by Nathan Froyd Committed by Nathan Froyd

i386.md (SI_REG, DI_REG): New constants.

	* config/i386/i386.md (SI_REG, DI_REG): New constants.
	(strmov): Use defined constants.
	(cmpstrnsi): Likewise.
	* config/i386/i386.c (decide_alg): Use defined constants.
	(ix86_expand_strlen): Likewise.

From-SVN: r129276
parent a9a81e7d
2007-10-12 Nathan Froyd <froydnj@codesourcery.com>
* config/i386/i386.md (SI_REG, DI_REG): New constants.
(strmov): Use defined constants.
(cmpstrnsi): Likewise.
* config/i386/i386.c (decide_alg): Use defined constants.
(ix86_expand_strlen): Likewise.
2007-10-12 Richard Sandiford <rsandifo@nildram.co.uk> 2007-10-12 Richard Sandiford <rsandifo@nildram.co.uk>
* dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition. * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
...@@ -15060,8 +15060,8 @@ decide_alg (HOST_WIDE_INT count, HOST_WIDE_INT expected_size, bool memset, ...@@ -15060,8 +15060,8 @@ decide_alg (HOST_WIDE_INT count, HOST_WIDE_INT expected_size, bool memset,
additionally, memset wants eax and memcpy wants esi. Don't additionally, memset wants eax and memcpy wants esi. Don't
consider such algorithms if the user has appropriated those consider such algorithms if the user has appropriated those
registers for their own purposes. */ registers for their own purposes. */
bool rep_prefix_usable = !(global_regs[2] || global_regs[5] bool rep_prefix_usable = !(global_regs[CX_REG] || global_regs[DI_REG]
|| (memset ? global_regs[0] : global_regs[4])); || (memset ? global_regs[AX_REG] : global_regs[SI_REG]));
#define ALG_USABLE_P(alg) (rep_prefix_usable \ #define ALG_USABLE_P(alg) (rep_prefix_usable \
|| (alg != rep_prefix_1_byte \ || (alg != rep_prefix_1_byte \
...@@ -16022,7 +16022,7 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align) ...@@ -16022,7 +16022,7 @@ ix86_expand_strlen (rtx out, rtx src, rtx eoschar, rtx align)
rtx unspec; rtx unspec;
/* Can't use this if the user has appropriated eax, ecx, or edi. */ /* Can't use this if the user has appropriated eax, ecx, or edi. */
if (global_regs[0] || global_regs[2] || global_regs[5]) if (global_regs[AX_REG] || global_regs[CX_REG] || global_regs[DI_REG])
return false; return false;
scratch2 = gen_reg_rtx (Pmode); scratch2 = gen_reg_rtx (Pmode);
......
...@@ -222,6 +222,8 @@ ...@@ -222,6 +222,8 @@
[(AX_REG 0) [(AX_REG 0)
(DX_REG 1) (DX_REG 1)
(CX_REG 2) (CX_REG 2)
(SI_REG 4)
(DI_REG 5)
(BP_REG 6) (BP_REG 6)
(SP_REG 7) (SP_REG 7)
(FLAGS_REG 17) (FLAGS_REG 17)
...@@ -18704,7 +18706,7 @@ ...@@ -18704,7 +18706,7 @@
/* Can't use this if the user has appropriated esi or edi. */ /* Can't use this if the user has appropriated esi or edi. */
if ((TARGET_SINGLE_STRINGOP || optimize_size) if ((TARGET_SINGLE_STRINGOP || optimize_size)
&& !(global_regs[4] || global_regs[5])) && !(global_regs[SI_REG] || global_regs[DI_REG]))
{ {
emit_insn (gen_strmov_singleop (operands[0], operands[1], emit_insn (gen_strmov_singleop (operands[0], operands[1],
operands[2], operands[3], operands[2], operands[3],
...@@ -19190,7 +19192,7 @@ ...@@ -19190,7 +19192,7 @@
rtx addr1, addr2, out, outlow, count, countreg, align; rtx addr1, addr2, out, outlow, count, countreg, align;
/* Can't use this if the user has appropriated esi or edi. */ /* Can't use this if the user has appropriated esi or edi. */
if (global_regs[4] || global_regs[5]) if (global_regs[SI_REG] || global_regs[DI_REG])
FAIL; FAIL;
out = operands[0]; out = operands[0];
......
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