This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PR target/8871
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org, rth at redhat dot com
- Date: Tue, 19 Aug 2003 15:45:50 +0200
- Subject: PR target/8871
Hi,
bootstrapped/regtested i386. OK?
Tue Aug 19 15:44:38 CEST 2003 Jan Hubicka <jh@suse.cz>
PR target/8871
* i386.md (zero_extendsidi2*): Add MMX and SSE alternatives.
Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.480
diff -c -3 -p -r1.480 i386.md
*** i386.md 28 Jul 2003 18:13:57 -0000 1.480
--- i386.md 19 Aug 2003 13:44:10 -0000
***************
*** 3278,3299 ****
")
(define_insn "zero_extendsidi2_32"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?*o")
! (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT"
! "#"
! [(set_attr "mode" "SI")])
(define_insn "zero_extendsidi2_rex64"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o")
! (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "rm,0")))]
! "TARGET_64BIT"
"@
mov\t{%k1, %k0|%k0, %k1}
! #"
! [(set_attr "type" "imovx,imov")
! (set_attr "mode" "SI,DI")])
(define_split
[(set (match_operand:DI 0 "memory_operand" "")
--- 3278,3333 ----
")
(define_insn "zero_extendsidi2_32"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?*o,!?y,!?Y")
! (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r,m,m")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT && !TARGET_INTER_UNIT_MOVES"
! "@
! #
! #
! #
! movd\t{%1, %0|%0, %1}
! movd\t{%1, %0|%0, %1}"
! [(set_attr "mode" "SI,SI,SI,DI,TI")
! (set_attr "type" "multi,multi,multi,mmxmov,ssemov")])
!
! (define_insn "*zero_extendsidi2_32_1"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?*o,!?y,!?Y")
! (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r,rm,rm")))
! (clobber (reg:CC 17))]
! "!TARGET_64BIT && TARGET_INTER_UNIT_MOVES"
! "@
! #
! #
! #
! movd\t{%1, %0|%0, %1}
! movd\t{%1, %0|%0, %1}"
! [(set_attr "mode" "SI,SI,SI,DI,TI")
! (set_attr "type" "multi,multi,multi,mmxmov,ssemov")])
(define_insn "zero_extendsidi2_rex64"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!?y,!?Y")
! (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "rm,0,m,m")))]
! "TARGET_64BIT && !TARGET_INTER_UNIT_MOVES"
"@
mov\t{%k1, %k0|%k0, %k1}
! #
! movd\t{%1, %0|%0, %1}
! movd\t{%1, %0|%0, %1}"
! [(set_attr "type" "imovx,imov,mmxmov,ssemov")
! (set_attr "mode" "SI,DI,DI,TI")])
!
! (define_insn "*zero_extendsidi2_rex64_1"
! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!?y,!*?")
! (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "rm,0,rm,rm")))]
! "TARGET_64BIT && TARGET_INTER_UNIT_MOVES"
! "@
! mov\t{%k1, %k0|%k0, %k1}
! #
! movd\t{%1, %0|%0, %1}
! movd\t{%1, %0|%0, %1}"
! [(set_attr "type" "imovx,imov,mmxmov,ssemov")
! (set_attr "mode" "SI,DI,SI,SI")])
(define_split
[(set (match_operand:DI 0 "memory_operand" "")
***************
*** 3315,3321 ****
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(zero_extend:DI (match_operand:SI 1 "general_operand" "")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT && reload_completed"
[(set (match_dup 3) (match_dup 1))
(set (match_dup 4) (const_int 0))]
"split_di (&operands[0], 1, &operands[3], &operands[4]);")
--- 3349,3356 ----
[(set (match_operand:DI 0 "nonimmediate_operand" "")
(zero_extend:DI (match_operand:SI 1 "general_operand" "")))
(clobber (reg:CC 17))]
! "!TARGET_64BIT && reload_completed
! && !SSE_REG_P (operands[0]) && !MMX_REG_P (operands[0])"
[(set (match_dup 3) (match_dup 1))
(set (match_dup 4) (const_int 0))]
"split_di (&operands[0], 1, &operands[3], &operands[4]);")