This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
i686/movstricthi fix
- To: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com, patches at x86-64 dot org
- Subject: i686/movstricthi fix
- From: Jan Hubicka <jh at suse dot cz>
- Date: Tue, 26 Jun 2001 17:36:53 +0200
Hi
my pre-reload switching patch brought two i686 failures, as movstricthi
does not contain proper test.
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:31:36
***************
*** 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")