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]

MMX patterns fix (head/branch)


Hi
The shift patterns don't have unspec guard around, as other MMX arithmetics
does.  This forces gcc to mysteriously use MMX registers when CSE or combine
manages to produce this insn from something.


Wed Feb 21 17:26:26 CET 2001  Jan Hubicka  <jh@suse.cz>
	* i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec.

Index: gcc/gcc/config/i386/i386.md
===================================================================
RCS file: /home/cvs/Repository/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.34
diff -c -3 -p -r1.34 i386.md
*** gcc/gcc/config/i386/i386.md	2001/02/20 15:45:33	1.34
--- gcc/gcc/config/i386/i386.md	2001/02/21 16:22:12
***************
*** 17872,17879 ****
  ;; See logical MMX insns.
  (define_insn "mmx_lshrdi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
! 		     (match_operand:DI 2 "nonmemory_operand" "yi")))]
    "TARGET_MMX"
    "psrlq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])
--- 17874,17882 ----
  ;; See logical MMX insns.
  (define_insn "mmx_lshrdi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (unspec:DI
! 	  [(lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
! 		       (match_operand:DI 2 "nonmemory_operand" "yi"))] 45))]
    "TARGET_MMX"
    "psrlq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])
***************
*** 17897,17904 ****
  ;; See logical MMX insns.
  (define_insn "mmx_ashldi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (ashift:DI (match_operand:DI 1 "register_operand" "0")
! 		   (match_operand:DI 2 "nonmemory_operand" "yi")))]
    "TARGET_MMX"
    "psllq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])
--- 17900,17908 ----
  ;; See logical MMX insns.
  (define_insn "mmx_ashldi3"
    [(set (match_operand:DI 0 "register_operand" "=y")
!         (unspec:DI
! 	 [(ashift:DI (match_operand:DI 1 "register_operand" "0")
! 		     (match_operand:DI 2 "nonmemory_operand" "yi"))] 45))]
    "TARGET_MMX"
    "psllq\\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmx")])


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