This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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]);")


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]