This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patches] i686/movstricthi fix
- To: Jan Hubicka <jh at suse dot cz>
- Subject: Re: [patches] i686/movstricthi fix
- From: Jan Hubicka <jh at suse dot cz>
- Date: Tue, 26 Jun 2001 17:41:33 +0200
- Cc: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com, patches at x86-64 dot org
- References: <20010626173653.C30261@atrey.karlin.mff.cuni.cz>
> Hi
> my pre-reload switching patch brought two i686 failures, as movstricthi
> does not contain proper test.
oops, the first test is wrong.
Tue Jun 26 17:34:30 CEST 2001 Jan Hubicka <jh@suse.cz>
* i386.md (movstricthi) Enable for optimize_size
(movstricthi_xor): Disable for partial reg stall machines.
Index: config/i386/i386.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.md,v
retrieving revision 1.280
diff -c -3 -p -r1.280 i386.md
*** i386.md 2001/06/26 10:47:33 1.280
--- i386.md 2001/06/26 15:39:59
***************
*** 1953,1959 ****
(define_expand "movstricthi"
[(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" ""))
(match_operand:HI 1 "general_operand" ""))]
! "! TARGET_PARTIAL_REG_STALL"
"
{
/* Don't generate memory->memory moves, go through a register */
--- 1953,1959 ----
(define_expand "movstricthi"
[(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" ""))
(match_operand:HI 1 "general_operand" ""))]
! "! TARGET_PARTIAL_REG_STALL || optimize_size"
"
{
/* Don't generate memory->memory moves, go through a register */
***************
*** 1964,1970 ****
(define_insn "*movstricthi_1"
[(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+rm,r"))
(match_operand:HI 1 "general_operand" "rn,m"))]
! "! TARGET_PARTIAL_REG_STALL
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"mov{w}\\t{%1, %0|%0, %1}"
[(set_attr "type" "imov")
--- 1964,1970 ----
(define_insn "*movstricthi_1"
[(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+rm,r"))
(match_operand:HI 1 "general_operand" "rn,m"))]
! "(! TARGET_PARTIAL_REG_STALL || optimize_size)
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"mov{w}\\t{%1, %0|%0, %1}"
[(set_attr "type" "imov")
***************
*** 1974,1980 ****
[(set (strict_low_part (match_operand:HI 0 "register_operand" "+r"))
(match_operand:HI 1 "const0_operand" "i"))
(clobber (reg:CC 17))]
! "reload_completed && (!TARGET_USE_MOV0 || optimize_size)"
"xor{w}\\t{%0, %0|%0, %0}"
[(set_attr "type" "alu1")
(set_attr "mode" "HI")
--- 1974,1981 ----
[(set (strict_low_part (match_operand:HI 0 "register_operand" "+r"))
(match_operand:HI 1 "const0_operand" "i"))
(clobber (reg:CC 17))]
! "reload_completed
! && ((!TARGET_USE_MOV0 && !TARGET_PARTIAL_REG_STALL) || optimize_size)"
"xor{w}\\t{%0, %0|%0, %0}"
[(set_attr "type" "alu1")
(set_attr "mode" "HI")